From 9f62720587d7efc656f33c4301c6b5d897e60703 Mon Sep 17 00:00:00 2001
From: lyfO_o <764716047@qq.com>
Date: 星期一, 04 七月 2022 18:01:09 +0800
Subject: [PATCH] 调整

---
 safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/security/TokenAuthenticationFilter.java |   50 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 41 insertions(+), 9 deletions(-)

diff --git a/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/security/TokenAuthenticationFilter.java b/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/security/TokenAuthenticationFilter.java
index ae3b0f6..46b5c97 100644
--- a/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/security/TokenAuthenticationFilter.java
+++ b/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/security/TokenAuthenticationFilter.java
@@ -9,6 +9,8 @@
 import com.gkhy.safePlatform.commons.enums.RedisKeyEnum;
 import com.gkhy.safePlatform.commons.enums.ResultCodes;
 import com.gkhy.safePlatform.commons.exception.BusinessException;
+import com.gkhy.safePlatform.commons.utils.RPCUtils;
+import com.gkhy.safePlatform.commons.utils.RedisUtils;
 import com.gkhy.safePlatform.commons.utils.StringUtils;
 import com.gkhy.safePlatform.commons.vo.ResultVO;
 import org.apache.dubbo.config.annotation.DubboReference;
@@ -39,6 +41,8 @@
     private TokenConfig tokenConfig;
     @DubboReference(check = false)
     private AccountAuthService userAccountService;
+    @Autowired
+    private RedisUtils redisUtils;
 
 
 
@@ -55,7 +59,7 @@
             chain.doFilter(req, resp);
         } catch (BusinessException e) {
             // 返回异常
-            this.writeJSON(req, resp, new ResultVO<>(e.getError()));
+            this.writeJSON(req, resp, new ResultVO<>(e.getCode(),e.getMessage()));
         }
 
     }
@@ -75,14 +79,14 @@
             // 这里是验证获取权限信息
             // 1.从redis中获取对应该用户的权限信息
             String accessTokenKey = RedisKeyEnum.authKey(RedisKeyEnum.AUTH_TOKEN, loginUserId);
-            String o = userAccountService.getValueByKeyFromRedis(accessTokenKey);
+            Object o = redisUtils.get(accessTokenKey);
             // 2.token是否存在
             if (o == null) {
                 // 是否存在
-                throw new BusinessException(ResultCodes.CLIENT_CREDENTIALS_SIGN_INVALID);
+                throw new BusinessException(ResultCodes.CLIENT_CREDENTIALS_TOKEN_INVALID);
             }else{
                 Long userId = Long.valueOf(loginUserId);
-                CacheUser cacheUser = JSONObject.parseObject(o, CacheUser.class);
+                CacheUser cacheUser = JSONObject.parseObject(o.toString(), CacheUser.class);
                 assert userId.equals(cacheUser.getUserId());
                 if ( !authToken.equals(cacheUser.getAccessToken())) {
                     throw new BusinessException(ResultCodes.CLIENT_CREDENTIALS_TOKEN_INVALID);
@@ -90,23 +94,51 @@
 
                 // 3.redis获取权限
                 String authoritiesKey = RedisKeyEnum.authKey(RedisKeyEnum.AUTH_AUTHORITIES, userId);
-                String oo = userAccountService.getValueByKeyFromRedis(authoritiesKey);
+                Object oo = redisUtils.get(authoritiesKey);
                 List<GrantedAuthority> authorities = new ArrayList<>();
                 // 4.redis中是否存在
                 if (oo != null) {
                     // 5.存在
-                    List<CacheAuthority> cacheAuthorities = JSONArray.parseArray(oo, CacheAuthority.class);
+                    List<CacheAuthority> cacheAuthorities = JSONArray.parseArray(oo.toString(), CacheAuthority.class);
                     for (CacheAuthority cacheAuthority: cacheAuthorities) {
                         authorities.add(new SimpleGrantedAuthority(cacheAuthority.getAuthority()));
                     }
                 }else {
                     // 6.不存在=>数据库查询
-                    String roleCode = userAccountService.getUserRoleCodeByUserId(userId);
+                    ResultVO<String> rpcResultRole = userAccountService.getUserRoleCodeByUserId(userId);
+
+                    if (rpcResultRole == null) {
+                        throw new BusinessException(ResultCodes.RPC_RESULT_NULL);
+                    }
+                    if (!ResultCodes.OK.getCode().equals(rpcResultRole.getCode())) {
+                        throw new BusinessException(rpcResultRole.getCode(), rpcResultRole.getMsg());
+                    }
+                    if (rpcResultRole.getData() == null) {
+                        throw new BusinessException(ResultCodes.RPC_DATA_NULL);
+                    }
+                    if (!(rpcResultRole.getData() instanceof String)) {
+                        throw new BusinessException(ResultCodes.RPC_DATA_TYPE_NOT_MATCH);
+                    }
                     // role
-                    authorities.add(new SimpleGrantedAuthority("ROLE_" + roleCode));
+                    authorities.add(new SimpleGrantedAuthority("ROLE_" + rpcResultRole.getData().toString()));
 
                     // permission
-                    List<String> permissions = userAccountService.getUserPermissionByUserId(userId);
+                    ResultVO<List<String>> rpcResultPermission = userAccountService.getUserPermissionByUserId(userId);
+
+                    if (rpcResultPermission == null) {
+                        throw new BusinessException(ResultCodes.RPC_RESULT_NULL);
+                    }
+                    if (!ResultCodes.OK.getCode().equals(rpcResultPermission.getCode())) {
+                        throw new BusinessException(rpcResultRole.getCode(), rpcResultRole.getMsg());
+                    }
+                    if (rpcResultPermission.getData() == null) {
+                        throw new BusinessException(ResultCodes.RPC_DATA_NULL);
+                    }
+                    if (!(rpcResultPermission.getData() instanceof List)) {
+                        throw new BusinessException(ResultCodes.RPC_DATA_TYPE_NOT_MATCH);
+                    }
+
+                    List<String> permissions = RPCUtils.castList(rpcResultPermission.getData(), String.class);
                     for (String permission : permissions) {
                         SimpleGrantedAuthority simpleGrantedAuthority = new SimpleGrantedAuthority(permission);
                         authorities.add(simpleGrantedAuthority);

--
Gitblit v1.9.2