增加了当前角色
This commit is contained in:
@ -1,5 +1,4 @@
|
||||
seata.enabled=true
|
||||
seata.application-id=${spring.application.name}
|
||||
seata.tx-service-group=${spring.application.name}-service-group
|
||||
seata.service.vgroup-mapping.eshop-service-group=default
|
||||
seata.service.grouplist.default=10.242.31.158:18035
|
||||
|
@ -7,5 +7,6 @@ public interface Constants {
|
||||
|
||||
public static final String AUTHORIZATION_HEADER = "Authorization";
|
||||
public static final String TOKEN_PREFIX = "Bearer ";
|
||||
public static final String CURRENT_ROLE_CODE = "currentRoleCode";
|
||||
|
||||
}
|
||||
|
@ -143,6 +143,11 @@ public class SecurityUser {
|
||||
* 职位ID
|
||||
*/
|
||||
private Integer positionId;
|
||||
|
||||
/**
|
||||
* 当前用户角色
|
||||
*/
|
||||
private String currentRoleCode;
|
||||
|
||||
/**
|
||||
* 用户角色列表
|
||||
|
@ -52,14 +52,15 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter {
|
||||
|
||||
// 提取request头信息
|
||||
final String header = request.getHeader(Constants.AUTHORIZATION_HEADER);
|
||||
final String currentRoleCode = request.getHeader(Constants.CURRENT_ROLE_CODE);
|
||||
|
||||
// 检查请求头是否包含 Bearer 前缀
|
||||
if (StringUtils.startsWith(header, Constants.TOKEN_PREFIX)) {
|
||||
// 移除header的前缀,提取出token字串
|
||||
String authToken = RegExUtils.replaceAll(header, Constants.TOKEN_PREFIX, "");
|
||||
|
||||
try {// 通过token读取用户信息
|
||||
SecurityContextHolder.getContext().setAuthentication(getAuthentication(authToken));
|
||||
try {// 通过token读取用户信息 (新增用户当前角色字段: 2021-03-05)
|
||||
SecurityContextHolder.getContext().setAuthentication(getAuthentication(authToken, currentRoleCode));
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
@ -73,7 +74,7 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter {
|
||||
* @param token
|
||||
* @return
|
||||
*/
|
||||
private Authentication getAuthentication(String token) {
|
||||
private Authentication getAuthentication(final String token, final String currentRoleCode) {
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
// 设置安全头
|
||||
headers.add(HttpHeaders.AUTHORIZATION, String.format("Bearer %s", token));
|
||||
@ -81,7 +82,7 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter {
|
||||
ResponseEntity<SecurityUser> entity = restTemplate.exchange(token_uri, HttpMethod.GET,
|
||||
new HttpEntity<String>(headers), SecurityUser.class);
|
||||
|
||||
return new UsernamePasswordAuthenticationToken(entity.getBody(), token);
|
||||
return new UsernamePasswordAuthenticationToken(entity.getBody().setCurrentRoleCode(currentRoleCode), token);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -146,6 +146,11 @@ public class BaseCacheUser {
|
||||
*/
|
||||
private Integer positionId;
|
||||
|
||||
/**
|
||||
* 当前用户角色
|
||||
*/
|
||||
private String currentRoleCode;
|
||||
|
||||
/**
|
||||
* 用户角色列表
|
||||
*/
|
||||
|
Reference in New Issue
Block a user