From 39f82dff10563bcaa5689a95a813f59d9a56fe20 Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Tue, 15 Oct 2024 21:53:14 +0800
Subject: [PATCH] 鉴权

---
 skjcmanager/skjcmanager-gateway/src/main/java/cn/gistack/gateway/filter/AuthFilter.java |   89 ++++++++++++++++++++++++++++++--------------
 1 files changed, 61 insertions(+), 28 deletions(-)

diff --git a/skjcmanager/skjcmanager-gateway/src/main/java/cn/gistack/gateway/filter/AuthFilter.java b/skjcmanager/skjcmanager-gateway/src/main/java/cn/gistack/gateway/filter/AuthFilter.java
index 39202cf..70e90ea 100644
--- a/skjcmanager/skjcmanager-gateway/src/main/java/cn/gistack/gateway/filter/AuthFilter.java
+++ b/skjcmanager/skjcmanager-gateway/src/main/java/cn/gistack/gateway/filter/AuthFilter.java
@@ -60,43 +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);
-
-		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, "缺失令牌,鉴权失败");
 		}
@@ -116,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) {

--
Gitblit v1.9.3