From b5757fdeade8dc9bfcaf5c71f9af789f4a2093dd Mon Sep 17 00:00:00 2001 From: xinzirun Date: Sun, 22 Sep 2024 10:08:22 +0800 Subject: [PATCH] =?UTF-8?q?feat():=20=E6=96=B0=E5=A2=9E=E9=89=B4=E6=9D=83S?= =?UTF-8?q?aas=E6=A0=87=E8=AF=86=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/muyu/common/core/constant/SecurityConstants.java | 5 +++++ .../main/java/com/muyu/common/core/utils/JwtUtils.java | 9 +++++++++ .../com/muyu/common/security/service/TokenService.java | 1 + .../main/java/com/muyu/gateway/filter/AuthFilter.java | 5 ++++- 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/SecurityConstants.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/SecurityConstants.java index c862929..a1f015a 100644 --- a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/SecurityConstants.java +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/SecurityConstants.java @@ -45,4 +45,9 @@ public class SecurityConstants { * 角色权限 */ public static final String ROLE_PERMISSION = "role_permission"; + + /** + * SaaS标识 + */ + public static final String SAAS_KEY = "ent-code"; } diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java index 62816cb..c3b286c 100644 --- a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java @@ -162,4 +162,13 @@ public class JwtUtils { public static String getValue (Claims claims, String key) { return Convert.toStr(claims.get(key), ""); } + + /** + * 根据身份信息获取SaaS标识 + * @param claims 身份信息 + * @return Saas标识 + */ + public static String getSaaSKey (Claims claims) { + return getValue(claims, SecurityConstants.SAAS_KEY); + } } diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java index 3955ddc..d6d8bc1 100644 --- a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java @@ -55,6 +55,7 @@ public class TokenService { claimsMap.put(SecurityConstants.USER_KEY, token); claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId); claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName); + claimsMap.put(SecurityConstants.SAAS_KEY, loginUser.getSysUser().getDatabaseName()); // 接口返回信息 Map rspMap = new HashMap(); diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java b/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java index 47e073f..e12595e 100644 --- a/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java +++ b/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java @@ -63,7 +63,8 @@ public class AuthFilter implements GlobalFilter, Ordered { } String userid = JwtUtils.getUserId(claims); String username = JwtUtils.getUserName(claims); - if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username)) { + String saaSKey = JwtUtils.getSaaSKey(claims); + if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username) || StringUtils.isEmpty(saaSKey)) { return unauthorizedResponse(exchange, "令牌验证失败"); } @@ -71,6 +72,8 @@ public class AuthFilter implements GlobalFilter, Ordered { addHeader(mutate, SecurityConstants.USER_KEY, userkey); addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid); addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username); + addHeader(mutate, SecurityConstants.SAAS_KEY, saaSKey); + // 内部请求来源参数清除 removeHeader(mutate, SecurityConstants.FROM_SOURCE); return chain.filter(exchange.mutate().request(mutate.build()).build());