From d780b942227a527584a0320723574b7e00e5fc85 Mon Sep 17 00:00:00 2001 From: lixuliang <lixuliang_hd@126.com> Date: 星期四, 29 八月 2024 18:02:39 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.11.205:9000/r/se-cloud --- se-gateway/src/main/java/com/se/gateway/filter/AuthFilter.java | 61 +++++++++++++++--------------- 1 files changed, 31 insertions(+), 30 deletions(-) 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..ca521c2 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 @@ -27,8 +27,7 @@ * @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 +39,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 +76,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 +85,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 +97,40 @@ /** * 鑾峰彇缂撳瓨key */ - private String getTokenKey(String token) - { + private String getTokenKey(String token) { return CacheConstants.LOGIN_TOKEN_KEY + token; } /** * 鑾峰彇璇锋眰token */ - private String getToken(ServerHttpRequest request) - { + private String getToken(ServerHttpRequest request) { + // 浠巋eader鑾峰彇token鏍囪瘑 String token = request.getHeaders().getFirst(TokenConstants.AUTHENTICATION); + + // 浠巙rl鑾峰彇token鏍囪瘑 + if (StringUtils.isEmpty(token)) { + token = request.getQueryParams().getFirst(TokenConstants.ACCESS_TOKEN); + } + if (StringUtils.isEmpty(token)) { + token = request.getQueryParams().getFirst(TokenConstants.TOKEN); + } + + // 浠巆ookie鑾峰彇token鏍囪瘑 + if (StringUtils.isEmpty(token)) { + token = StringUtils.getValueFromCookie(request, TokenConstants.COOKIE_TOKEN); + } + + //String token = request.getHeaders().getFirst(TokenConstants.AUTHENTICATION); // 濡傛灉鍓嶇璁剧疆浜嗕护鐗屽墠缂�锛屽垯瑁佸壀鎺夊墠缂� - 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