From 5e59749ad5232f3caee71925433d8341fd41b88b Mon Sep 17 00:00:00 2001 From: ajaxfan <909938737@qq.com> Date: Fri, 5 Mar 2021 09:55:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E8=A7=92=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/seata-configuration.properties | 1 - .../ebtp/cloud/security/starter/common/Constants.java | 1 + .../ebtp/cloud/security/starter/entity/SecurityUser.java | 5 +++++ .../starter/filter/TokenAuthenticationFilter.java | 9 +++++---- .../mall/ebtp/common/base/entity/BaseCacheUser.java | 5 +++++ 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/mall-ebtp-cloud-seata-starter/src/main/resources/seata-configuration.properties b/mall-ebtp-cloud-seata-starter/src/main/resources/seata-configuration.properties index 9b87cab..0fdb775 100644 --- a/mall-ebtp-cloud-seata-starter/src/main/resources/seata-configuration.properties +++ b/mall-ebtp-cloud-seata-starter/src/main/resources/seata-configuration.properties @@ -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 diff --git a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/common/Constants.java b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/common/Constants.java index 471a1bf..5945455 100644 --- a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/common/Constants.java +++ b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/common/Constants.java @@ -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"; } diff --git a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/entity/SecurityUser.java b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/entity/SecurityUser.java index 628fbf3..4319950 100644 --- a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/entity/SecurityUser.java +++ b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/entity/SecurityUser.java @@ -143,6 +143,11 @@ public class SecurityUser { * 职位ID */ private Integer positionId; + + /** + * 当前用户角色 + */ + private String currentRoleCode; /** * 用户角色列表 diff --git a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/TokenAuthenticationFilter.java b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/TokenAuthenticationFilter.java index dc262ba..1abf366 100644 --- a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/TokenAuthenticationFilter.java +++ b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/TokenAuthenticationFilter.java @@ -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 entity = restTemplate.exchange(token_uri, HttpMethod.GET, new HttpEntity(headers), SecurityUser.class); - return new UsernamePasswordAuthenticationToken(entity.getBody(), token); + return new UsernamePasswordAuthenticationToken(entity.getBody().setCurrentRoleCode(currentRoleCode), token); } } diff --git a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/base/entity/BaseCacheUser.java b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/base/entity/BaseCacheUser.java index 03da1e6..9d1f561 100644 --- a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/base/entity/BaseCacheUser.java +++ b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/base/entity/BaseCacheUser.java @@ -146,6 +146,11 @@ public class BaseCacheUser { */ private Integer positionId; + /** + * 当前用户角色 + */ + private String currentRoleCode; + /** * 用户角色列表 */