mitao
2025-02-27 d4aca95b4a0a7a71162beb383b2d39fc7ee064bf
springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/filters/JWTAuthenticationTokenFilter.java
@@ -212,7 +212,7 @@
                        String hexStr = AES.parseByte2HexStr(encrypt);
                        safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_USERINFO, hexStr);
                    }
                } else if(21 == type){
                }else if(21 == type){
                    //三个身边
                    String key = SecurityConstants.ROLE_USER + "sangeshenbian:" + userId;
                    Boolean aBoolean = stringRedisTemplate.hasKey(key);
@@ -253,7 +253,7 @@
                        safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_USERINFO, hexStr);
                    }
                }else {
                } else {
                    String key = SecurityConstants.ROLE_USER + userId;
                    Boolean aBoolean = stringRedisTemplate.hasKey(key);
                    if (aBoolean) {
@@ -270,32 +270,34 @@
                            valueOperations.set(key, JSONArray.toJSONString(authorities), 24, TimeUnit.HOURS);
                        }
                    }
                }
                UsernamePasswordAuthenticationToken authentication =
                        new UsernamePasswordAuthenticationToken(userId, userId, authorities);// 主要使用权限 账户 密码 不重要
                SecurityContextHolder.getContext().setAuthentication(authentication);
                safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_LOGOUT, tokenHeader);
                // 登录用户的所有信息
                String userKey = UserConstants.LOGIN_USER_INFO + userId;
                Boolean hasKeyLoginUserInfo = stringRedisTemplate.hasKey(userKey);
                if (hasKeyLoginUserInfo) {
                    String userInfo = valueOperations.get(userKey);
                    byte[] encrypt = AES.encrypt(userInfo, Constants.AES_KEY);
                    String hexStr = AES.parseByte2HexStr(encrypt);
                    safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_USERINFO, hexStr);
                } else {
                    R<LoginUserInfoVO> r = userService.getUserInfoByUserId(userId);
                    if (!R.isOk(r)) {
                        ResultUtil.responseJson(response, R.fail(HttpStatus.ERROR, "登录用户信息查询失败"));
                        return;
                    UsernamePasswordAuthenticationToken authentication =
                            new UsernamePasswordAuthenticationToken(userId, userId, authorities);// 主要使用权限 账户 密码 不重要
                    SecurityContextHolder.getContext().setAuthentication(authentication);
                    safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_LOGOUT, tokenHeader);
                    // 登录用户的所有信息
                    String userKey = UserConstants.LOGIN_USER_INFO + userId;
                    Boolean hasKeyLoginUserInfo = stringRedisTemplate.hasKey(userKey);
                    if (hasKeyLoginUserInfo) {
                        String userInfo = valueOperations.get(userKey);
                        byte[] encrypt = AES.encrypt(userInfo, Constants.AES_KEY);
                        String hexStr = AES.parseByte2HexStr(encrypt);
                        safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_USERINFO, hexStr);
                    } else {
                        R<LoginUserInfoVO> r = userService.getUserInfoByUserId(userId);
                        if (!R.isOk(r)) {
                            ResultUtil.responseJson(response, R.fail(HttpStatus.ERROR, "登录用户信息查询失败"));
                            return;
                        }
                        LoginUserInfoVO data = r.getData();
                        String userInfo = JSONObject.toJSONString(data);
                        valueOperations.set(userKey, userInfo, 24, TimeUnit.HOURS);
                        byte[] encrypt = AES.encrypt(userInfo, Constants.AES_KEY);
                        String hexStr = AES.parseByte2HexStr(encrypt);
                        safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_USERINFO, hexStr);
                    }
                    LoginUserInfoVO data = r.getData();
                    String userInfo = JSONObject.toJSONString(data);
                    valueOperations.set(userKey, userInfo, 24, TimeUnit.HOURS);
                    byte[] encrypt = AES.encrypt(userInfo, Constants.AES_KEY);
                    String hexStr = AES.parseByte2HexStr(encrypt);
                    safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_USERINFO, hexStr);
                }
            } else {
                // 小程序无需登录也可访问地址列表
                List<String> noLoginUrl = new ArrayList<>();