From b440768224689b20144435f5ac10c63799f8d6e4 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期四, 29 八月 2024 16:23:06 +0800 Subject: [PATCH] 1 --- .gitignore | 2 + se-gateway/src/main/java/com/se/gateway/filter/AuthFilter.java | 60 ++++++++++++++--------------- se-gateway/src/main/java/com/se/gateway/config/CorsConfig.java | 1 3 files changed, 32 insertions(+), 31 deletions(-) diff --git a/.gitignore b/.gitignore index 31adb1f..3aac515 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,5 @@ *.jar /docker-compose/nginx/html /docker-compose/mysql/data +/docker-compose/nacos/logs/nacos_gc.log.0.current +/docker-compose/redis/data/dump.rdb diff --git a/se-gateway/src/main/java/com/se/gateway/config/CorsConfig.java b/se-gateway/src/main/java/com/se/gateway/config/CorsConfig.java index b6a358f..00385e4 100644 --- a/se-gateway/src/main/java/com/se/gateway/config/CorsConfig.java +++ b/se-gateway/src/main/java/com/se/gateway/config/CorsConfig.java @@ -20,6 +20,7 @@ * @date 2024-08-28 */ @Configuration +@SuppressWarnings("ALL") public class CorsConfig { /** diff --git a/se-gateway/src/main/java/com/se/gateway/filter/AuthFilter.java b/se-gateway/src/main/java/com/se/gateway/filter/AuthFilter.java index 52323a6..e147b1d 100644 --- a/se-gateway/src/main/java/com/se/gateway/filter/AuthFilter.java +++ b/se-gateway/src/main/java/com/se/gateway/filter/AuthFilter.java @@ -21,14 +21,15 @@ import io.jsonwebtoken.Claims; import reactor.core.publisher.Mono; +import javax.servlet.http.HttpServletRequest; + /** * 缃戝叧閴存潈 * * @author admin */ @Component -public class AuthFilter implements GlobalFilter, Ordered -{ +public class AuthFilter implements GlobalFilter, Ordered { private static final Logger log = LoggerFactory.getLogger(AuthFilter.class); // 鎺掗櫎杩囨护鐨� uri 鍦板潃锛宯acos鑷娣诲姞 @@ -40,37 +41,31 @@ @Override - public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) - { + public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { ServerHttpRequest request = exchange.getRequest(); ServerHttpRequest.Builder mutate = request.mutate(); String url = request.getURI().getPath(); // 璺宠繃涓嶉渶瑕侀獙璇佺殑璺緞 - if (StringUtils.matches(url, ignoreWhite.getWhites())) - { + if (StringUtils.matches(url, ignoreWhite.getWhites())) { return chain.filter(exchange); } String token = getToken(request); - if (StringUtils.isEmpty(token)) - { + if (StringUtils.isEmpty(token)) { return unauthorizedResponse(exchange, "浠ょ墝涓嶈兘涓虹┖"); } Claims claims = JwtUtils.parseToken(token); - if (claims == null) - { + if (claims == null) { return unauthorizedResponse(exchange, "浠ょ墝宸茶繃鏈熸垨楠岃瘉涓嶆纭紒"); } String userkey = JwtUtils.getUserKey(claims); boolean islogin = redisService.hasKey(getTokenKey(userkey)); - if (!islogin) - { + if (!islogin) { return unauthorizedResponse(exchange, "鐧诲綍鐘舵�佸凡杩囨湡"); } String userid = JwtUtils.getUserId(claims); String username = JwtUtils.getUserName(claims); - if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username)) - { + if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username)) { return unauthorizedResponse(exchange, "浠ょ墝楠岃瘉澶辫触"); } @@ -83,10 +78,8 @@ return chain.filter(exchange.mutate().request(mutate.build()).build()); } - private void addHeader(ServerHttpRequest.Builder mutate, String name, Object value) - { - if (value == null) - { + private void addHeader(ServerHttpRequest.Builder mutate, String name, Object value) { + if (value == null) { return; } String valueStr = value.toString(); @@ -94,13 +87,11 @@ mutate.header(name, valueEncode); } - private void removeHeader(ServerHttpRequest.Builder mutate, String name) - { + private void removeHeader(ServerHttpRequest.Builder mutate, String name) { mutate.headers(httpHeaders -> httpHeaders.remove(name)).build(); } - private Mono<Void> unauthorizedResponse(ServerWebExchange exchange, String msg) - { + private Mono<Void> unauthorizedResponse(ServerWebExchange exchange, String msg) { log.error("[閴存潈寮傚父澶勭悊]璇锋眰璺緞:{}", exchange.getRequest().getPath()); return ServletUtils.webFluxResponseWriter(exchange.getResponse(), msg, HttpStatus.UNAUTHORIZED); } @@ -108,28 +99,35 @@ /** * 鑾峰彇缂撳瓨key */ - private String getTokenKey(String token) - { + private String getTokenKey(String token) { return CacheConstants.LOGIN_TOKEN_KEY + token; } /** * 鑾峰彇璇锋眰token */ - private String getToken(ServerHttpRequest request) - { - String token = request.getHeaders().getFirst(TokenConstants.AUTHENTICATION); + private String getToken(ServerHttpRequest req) { + HttpServletRequest request = (HttpServletRequest) req; + // 浠巋eader鑾峰彇token鏍囪瘑 + String token = request.getHeader(TokenConstants.AUTHENTICATION); + + // 浠巙rl鑾峰彇token鏍囪瘑 + if (StringUtils.isEmpty(token)) { + token = request.getParameter(TokenConstants.ACCESS_TOKEN); + } + if (StringUtils.isEmpty(token)) { + token = request.getParameter(TokenConstants.TOKEN); + } + // 濡傛灉鍓嶇璁剧疆浜嗕护鐗屽墠缂�锛屽垯瑁佸壀鎺夊墠缂� - if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) - { + if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) { token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY); } return token; } @Override - public int getOrder() - { + public int getOrder() { return -200; } } \ No newline at end of file -- Gitblit v1.9.3