Merge remote-tracking branch 'origin/master'
This commit is contained in:
@ -11,6 +11,7 @@ import java.io.IOException;
|
|||||||
public class BearerTokenFilter implements Filter {
|
public class BearerTokenFilter implements Filter {
|
||||||
private static final String AUTHORIZATION_HEADER = "Authorization";
|
private static final String AUTHORIZATION_HEADER = "Authorization";
|
||||||
private static final String BEARER_PREFIX = "Bearer ";
|
private static final String BEARER_PREFIX = "Bearer ";
|
||||||
|
private static final String ROLE_HEADER = "Currentrolecode";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
|
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
|
||||||
@ -22,10 +23,15 @@ public class BearerTokenFilter implements Filter {
|
|||||||
String token = authHeader.substring(BEARER_PREFIX.length());
|
String token = authHeader.substring(BEARER_PREFIX.length());
|
||||||
BearerTokenHolder.setToken(token);
|
BearerTokenHolder.setToken(token);
|
||||||
}
|
}
|
||||||
|
//currentRole
|
||||||
|
String roleHeader = httpRequest.getHeader(ROLE_HEADER);
|
||||||
|
if (roleHeader != null) {;
|
||||||
|
CurrentRoleHolder.setRole(roleHeader);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
chain.doFilter(request, response);
|
chain.doFilter(request, response);
|
||||||
} finally {
|
} finally {
|
||||||
BearerTokenHolder.clear();
|
BearerTokenHolder.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,17 @@
|
|||||||
|
package com.chinaunicom.mall.ebtp.cloud.security.starter.filter;
|
||||||
|
|
||||||
|
public class CurrentRoleHolder {
|
||||||
|
private static final ThreadLocal<String> ROLE_HOLDER = new ThreadLocal<>();
|
||||||
|
|
||||||
|
public static void setRole(String role) {
|
||||||
|
ROLE_HOLDER.set(role);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getRole() {
|
||||||
|
return ROLE_HOLDER.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void clear() {
|
||||||
|
ROLE_HOLDER.remove();
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
package com.chinaunicom.mall.ebtp.common.base.service.impl;
|
package com.chinaunicom.mall.ebtp.common.base.service.impl;
|
||||||
|
|
||||||
|
import com.chinaunicom.mall.ebtp.cloud.security.starter.filter.CurrentRoleHolder;
|
||||||
import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser;
|
import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser;
|
||||||
import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService;
|
import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -37,7 +38,10 @@ public class BaseCacheUserServiceImpl implements IBaseCacheUserService {
|
|||||||
}
|
}
|
||||||
Object o = redisTemplate.opsForValue().get(REDIS_USER_KEY + token);
|
Object o = redisTemplate.opsForValue().get(REDIS_USER_KEY + token);
|
||||||
if (o instanceof BaseCacheUser) {
|
if (o instanceof BaseCacheUser) {
|
||||||
return (BaseCacheUser) o;
|
BaseCacheUser cacheUser = (BaseCacheUser) o;
|
||||||
|
// 添加当前用户角色
|
||||||
|
cacheUser.setCurrentRoleCode(CurrentRoleHolder.getRole());
|
||||||
|
return cacheUser;
|
||||||
} else {
|
} else {
|
||||||
log.warn("redis中未找到用户信息,token:{}", token);
|
log.warn("redis中未找到用户信息,token:{}", token);
|
||||||
return null;
|
return null;
|
||||||
|
Reference in New Issue
Block a user