xieb
2024-10-15 39f82dff10563bcaa5689a95a813f59d9a56fe20
鉴权
1 files modified
90 ■■■■■ changed files
skjcmanager/skjcmanager-gateway/src/main/java/cn/gistack/gateway/filter/AuthFilter.java 90 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-gateway/src/main/java/cn/gistack/gateway/filter/AuthFilter.java
@@ -60,44 +60,17 @@
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        //校验 Token 放行
        String originalRequestUrl = RequestProvider.getOriginalRequestUrl(exchange);
        String path = exchange.getRequest().getURI().getPath();
        if (isSkip(originalRequestUrl)) {
        if (isSkip(path) || isSkip(originalRequestUrl)) {
            return chain.filter(exchange);
        }
        //校验 Token 合法性
        ServerHttpResponse resp = exchange.getResponse();
        String headerToken = exchange.getRequest().getHeaders().getFirst(AuthProvider.AUTH_KEY);
        String paramToken = exchange.getRequest().getQueryParams().getFirst(AuthProvider.AUTH_KEY);
        //校验 basic 放行
        if (isSkip(path)) {
            String header = exchange.getRequest().getHeaders().getFirst("Authorization");
            if (header == null || !header.startsWith("Basic")) {
                return unAuth(resp, "缺失令牌,鉴权失败");
            }
            byte[] base64Token = header.substring(6).getBytes();
            byte[] decoded;
            try {
                decoded = Base64.getDecoder().decode(base64Token);
            } catch (IllegalArgumentException var7) {
                return unAuth(resp, "缺失令牌,鉴权失败");
            }
            String token = new String(decoded);
            int index = token.indexOf(":");
            String[] tokens = new String[]{token.substring(0, index), token.substring(index + 1)};
            if (tokens.length <= 0) {
                return unAuth(resp, "缺失令牌,鉴权失败");
            }
            return chain.filter(exchange);
        }
        if (StringUtils.isBlank(headerToken) && StringUtils.isBlank(paramToken)) {
            return unAuth(resp, "缺失令牌,鉴权失败");
        }
@@ -117,6 +90,65 @@
            }
        }
        return chain.filter(exchange);
        //校验 Token 放行
//        String originalRequestUrl = RequestProvider.getOriginalRequestUrl(exchange);
//        String path = exchange.getRequest().getURI().getPath();
//        if (isSkip(originalRequestUrl)) {
//            return chain.filter(exchange);
//        }
//
//        //校验 Token 合法性
//        ServerHttpResponse resp = exchange.getResponse();
//        String headerToken = exchange.getRequest().getHeaders().getFirst(AuthProvider.AUTH_KEY);
//        String paramToken = exchange.getRequest().getQueryParams().getFirst(AuthProvider.AUTH_KEY);
//
//        //校验 basic 放行
//        if (isSkip(path)) {
//            String header = exchange.getRequest().getHeaders().getFirst("Authorization");
//            if (header == null || !header.startsWith("Basic")) {
//                return unAuth(resp, "缺失令牌,鉴权失败");
//            }
//
//            byte[] base64Token = header.substring(6).getBytes();
//
//            byte[] decoded;
//            try {
//                decoded = Base64.getDecoder().decode(base64Token);
//            } catch (IllegalArgumentException var7) {
//                return unAuth(resp, "缺失令牌,鉴权失败");
//            }
//            String token = new String(decoded);
//            int index = token.indexOf(":");
//
//            String[] tokens = new String[]{token.substring(0, index), token.substring(index + 1)};
//            if (tokens.length <= 0) {
//                return unAuth(resp, "缺失令牌,鉴权失败");
//            }
//
//            return chain.filter(exchange);
//        }
//
//        if (StringUtils.isBlank(headerToken) && StringUtils.isBlank(paramToken)) {
//            return unAuth(resp, "缺失令牌,鉴权失败");
//        }
//        String auth = StringUtils.isBlank(headerToken) ? paramToken : headerToken;
//        String token = JwtUtil.getToken(auth);
//        Claims claims = JwtUtil.parseJWT(token);
//        if (token == null || claims == null) {
//            return unAuth(resp, "请求未授权");
//        }
//        //判断 Token 状态
//        if (jwtProperties.getState()) {
//            String tenantId = String.valueOf(claims.get(TokenConstant.TENANT_ID));
//            String userId = String.valueOf(claims.get(TokenConstant.USER_ID));
//            String accessToken = JwtUtil.getAccessToken(tenantId, userId, token);
//            if (!token.equalsIgnoreCase(accessToken)) {
//                return unAuth(resp, "令牌已失效");
//            }
//        }
//        return chain.filter(exchange);
    }
    private boolean isSkip(String path) {