From d4374a87023f4a0fef5d973faa74d93726c4b13c Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Tue, 15 Oct 2024 14:58:48 +0800
Subject: [PATCH] 鉴权
---
skjcmanager/skjcmanager-gateway/src/main/java/cn/gistack/gateway/filter/AuthFilter.java | 33 ++++++++++++++++++++++++++++++++-
1 files changed, 32 insertions(+), 1 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 8deb05a..c3a070e 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
@@ -37,11 +37,13 @@
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;
import org.springframework.util.AntPathMatcher;
+import org.springframework.util.Base64Utils;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.nio.charset.StandardCharsets;
+import java.util.Base64;
/**
* 鉴权认证
@@ -62,13 +64,42 @@
//校验 Token 放行
String originalRequestUrl = RequestProvider.getOriginalRequestUrl(exchange);
String path = exchange.getRequest().getURI().getPath();
- if (isSkip(path) || isSkip(originalRequestUrl)) {
+ 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);
+
+ 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, "缺失令牌,鉴权失败");
}
--
Gitblit v1.9.3