hjl
2024-05-30 50672a5c91c33f2833f91981b562af3d88b9f1d6
ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java
@@ -44,8 +44,9 @@
        ServerHttpRequest.Builder mutate = request.mutate();
        String url = request.getURI().getPath();
        String trim = url.trim();
        // 跳过不需要验证的路径
        if (StringUtils.matches(url, ignoreWhite.getWhites())) {
        if (StringUtils.matches(trim, ignoreWhite.getWhites())) {
            return chain.filter(exchange);
        }
        String token = getToken(request);
@@ -57,8 +58,12 @@
            return unauthorizedResponse(exchange, "令牌已过期或验证不正确!");
        }
        String userkey = JwtUtils.getUserKey(claims);
        String userkey1 = JwtUtils.getUserKey1(claims);
        String userkey2 = JwtUtils.getUserKey2(claims);
        boolean islogin = redisService.hasKey(getTokenKey(userkey));
        if (!islogin) {
        boolean islogin1 = redisService.hasKey(getTokenKey(userkey1));
        boolean islogin2 = redisService.hasKey(getTokenKeyStudy(userkey2));
        if (!islogin && !islogin1 && !islogin2) {
            return unauthorizedResponse(exchange, "登录状态已过期");
        }
        String userid = JwtUtils.getUserId(claims);
@@ -67,8 +72,16 @@
            return unauthorizedResponse(exchange, "令牌验证失败");
        }
        if (org.springframework.util.StringUtils.hasLength(userkey)) {
            addHeader(mutate, SecurityConstants.USER_KEY, userkey);
        }
        if (org.springframework.util.StringUtils.hasLength(userkey1)) {
            addHeader(mutate, SecurityConstants.USER_PARENT_KEY, userkey1);
        }
        if (org.springframework.util.StringUtils.hasLength(userkey2)) {
            addHeader(mutate, SecurityConstants.USER_STUDY_KEY, userkey2);
        }
        // 设置用户信息到请求
        addHeader(mutate, SecurityConstants.USER_KEY, userkey);
        addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid);
        addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username);
        // 内部请求来源参数清除
@@ -102,6 +115,13 @@
    }
    /**
     * 获取学习端缓存key
     */
    private String getTokenKeyStudy(String token) {
        return CacheConstants.LOGIN_TOKEN_KEY_STUDY + token;
    }
    /**
     * 获取请求token
     */
    private String getToken(ServerHttpRequest request) {