增加了当前角色

This commit is contained in:
ajaxfan
2021-03-05 09:55:58 +08:00
parent a6e9301c4d
commit 5e59749ad5
5 changed files with 16 additions and 5 deletions

View File

@ -1,5 +1,4 @@
seata.enabled=true seata.enabled=true
seata.application-id=${spring.application.name} seata.application-id=${spring.application.name}
seata.tx-service-group=${spring.application.name}-service-group 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 seata.service.grouplist.default=10.242.31.158:18035

View File

@ -7,5 +7,6 @@ public interface Constants {
public static final String AUTHORIZATION_HEADER = "Authorization"; public static final String AUTHORIZATION_HEADER = "Authorization";
public static final String TOKEN_PREFIX = "Bearer "; public static final String TOKEN_PREFIX = "Bearer ";
public static final String CURRENT_ROLE_CODE = "currentRoleCode";
} }

View File

@ -144,6 +144,11 @@ public class SecurityUser {
*/ */
private Integer positionId; private Integer positionId;
/**
* 当前用户角色
*/
private String currentRoleCode;
/** /**
* 用户角色列表 * 用户角色列表
*/ */

View File

@ -52,14 +52,15 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter {
// 提取request头信息 // 提取request头信息
final String header = request.getHeader(Constants.AUTHORIZATION_HEADER); final String header = request.getHeader(Constants.AUTHORIZATION_HEADER);
final String currentRoleCode = request.getHeader(Constants.CURRENT_ROLE_CODE);
// 检查请求头是否包含 Bearer 前缀 // 检查请求头是否包含 Bearer 前缀
if (StringUtils.startsWith(header, Constants.TOKEN_PREFIX)) { if (StringUtils.startsWith(header, Constants.TOKEN_PREFIX)) {
// 移除header的前缀提取出token字串 // 移除header的前缀提取出token字串
String authToken = RegExUtils.replaceAll(header, Constants.TOKEN_PREFIX, ""); String authToken = RegExUtils.replaceAll(header, Constants.TOKEN_PREFIX, "");
try {// 通过token读取用户信息 try {// 通过token读取用户信息 (新增用户当前角色字段: 2021-03-05)
SecurityContextHolder.getContext().setAuthentication(getAuthentication(authToken)); SecurityContextHolder.getContext().setAuthentication(getAuthentication(authToken, currentRoleCode));
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage()); log.error(e.getMessage());
} }
@ -73,7 +74,7 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter {
* @param token * @param token
* @return * @return
*/ */
private Authentication getAuthentication(String token) { private Authentication getAuthentication(final String token, final String currentRoleCode) {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
// 设置安全头 // 设置安全头
headers.add(HttpHeaders.AUTHORIZATION, String.format("Bearer %s", token)); 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, ResponseEntity<SecurityUser> entity = restTemplate.exchange(token_uri, HttpMethod.GET,
new HttpEntity<String>(headers), SecurityUser.class); new HttpEntity<String>(headers), SecurityUser.class);
return new UsernamePasswordAuthenticationToken(entity.getBody(), token); return new UsernamePasswordAuthenticationToken(entity.getBody().setCurrentRoleCode(currentRoleCode), token);
} }
} }

View File

@ -146,6 +146,11 @@ public class BaseCacheUser {
*/ */
private Integer positionId; private Integer positionId;
/**
* 当前用户角色
*/
private String currentRoleCode;
/** /**
* 用户角色列表 * 用户角色列表
*/ */