From e33cc6968e5c7c57013413b077421b77714ed69b Mon Sep 17 00:00:00 2001
From: liyj <1003249715@qq.com>
Date: Tue, 20 Aug 2024 14:48:17 +0800
Subject: [PATCH] 1、修改代码生成器 2、优化网关解析token信息 3、web端登录授权操作 4、web端修改密码操作

---
 dyh-gateway/src/main/java/cn/huge/gateway/filter/AuthFilter.java |   50 +++++++++++++++++++++-----------------------------
 1 files changed, 21 insertions(+), 29 deletions(-)

diff --git a/dyh-gateway/src/main/java/cn/huge/gateway/filter/AuthFilter.java b/dyh-gateway/src/main/java/cn/huge/gateway/filter/AuthFilter.java
index c1481a9..d93e0cd 100644
--- a/dyh-gateway/src/main/java/cn/huge/gateway/filter/AuthFilter.java
+++ b/dyh-gateway/src/main/java/cn/huge/gateway/filter/AuthFilter.java
@@ -1,5 +1,6 @@
 package cn.huge.gateway.filter;
 
+import cn.huge.gateway.utils.ReturnBO;
 import cn.huge.gateway.utils.SpringContextUtil;
 import com.auth0.jwt.JWT;
 import com.auth0.jwt.JWTVerifier;
@@ -87,6 +88,7 @@
             if (status) {
                 return chain.filter(exchange);
             } else {
+                ReturnBO returnBO = new ReturnBO();
                 //从请求头中取出token
                 String token = exchange.getRequest().getHeaders().getFirst("Authorization");
                 //未携带token或token在黑名单内
@@ -94,34 +96,26 @@
                     ServerHttpResponse originalResponse = exchange.getResponse();
                     originalResponse.setStatusCode(HttpStatus.OK);
                     originalResponse.getHeaders().add("Content-Type", "application/json;charset=UTF-8");
-                    byte[] response = "{\"code\": \"401\",\"msg\": \"用户未登录,请进行登录!\"}"
-                            .getBytes(StandardCharsets.UTF_8);
+                    returnBO.setCode(401);
+                    returnBO.setMsg("您尚未登录,请登录后重试!");
+                    byte[] response = returnBO.toString().getBytes(StandardCharsets.UTF_8);
                     DataBuffer buffer = originalResponse.bufferFactory().wrap(response);
                     return originalResponse.writeWith(Flux.just(buffer));
                 } else {
                     //取出token包含的身份
-                    Map<String, Object> result = verifyJWT(token);
-                    int code = (int) result.get("code");
-                    if (code != 0) {
+                    returnBO = verifyJWT(token);
+                    if (returnBO.getCode() != 0) {
                         ServerHttpResponse originalResponse = exchange.getResponse();
                         originalResponse.setStatusCode(HttpStatus.OK);
                         originalResponse.getHeaders().add("Content-Type", "application/json;charset=UTF-8");
-                        String responseResult = "{\"code\": \"" + code + "\", \"msg\": \"" + result.get("msg") + "\"}";
-                        byte[] response = responseResult.getBytes(StandardCharsets.UTF_8);
+                        byte[] response = returnBO.toString().getBytes(StandardCharsets.UTF_8);
                         DataBuffer buffer = originalResponse.bufferFactory().wrap(response);
                         return originalResponse.writeWith(Flux.just(buffer));
                     } else {
                         //将现在的request,添加当前身份
-                        String userId = (String) result.get("userId");
+                        String userId = (String) returnBO.getData();
                         ServerHttpRequest mutableReq = null;
-                        String custId = (String) result.get("custId");
-                        if (StringUtils.isNotEmpty(custId)) {
-                            URI uri = exchange.getRequest().getURI();
-                            URI newUri = assembleUri(uri, custId);
-                            exchange.getRequest().mutate().uri(newUri).header("Authorization-userId", userId).header("Authorization-custId", custId).build();
-                        } else {
-                            exchange.getRequest().mutate().header("Authorization-userId", userId).build();
-                        }
+                        exchange.getRequest().mutate().header("Authorization-userId", userId).build();
                         ServerWebExchange mutableExchange = exchange.mutate().request(mutableReq).build();
                         return chain.filter(mutableExchange);
                     }
@@ -135,8 +129,8 @@
      * @param token 授权信息
      * @return Map
      */
-    private Map<String, Object> verifyJWT(String token){
-        Map<String, Object> result = new HashMap<>();
+    private ReturnBO verifyJWT(String token){
+        ReturnBO returnBO = new ReturnBO();
         try {
             Algorithm algorithm = Algorithm.HMAC256(secretKey);
             JWTVerifier verifier = JWT.require(algorithm)
@@ -145,25 +139,23 @@
             DecodedJWT jwt = verifier.verify(token);
             String userId = jwt.getClaim("userId").asString();
             if (userId.isEmpty()){
-                result.put("code", 401);
-                result.put("msg", "登录用户已失效,请重新登录");
+                returnBO.setCode(401);
+                returnBO.setMsg("您尚未登录,请登录后重试!");
             }else{
-                result.put("code", 0);
-                result.put("userId", userId);
-                String custId = jwt.getClaim("custId").asString();
-                result.put("custId", custId);
+                returnBO.setCode(0);
+                returnBO.setData(userId);
             }
         } catch (JWTVerificationException e){
             log.error("AuthFilter方法[verifyJWT]调用异常:"+e, e);
             if (e.getMessage().indexOf("The Token has expired") != -1){
-                result.put("code", 401);
-                result.put("msg", "登录用户已失效,请重新登录!");
+                returnBO.setCode(401);
+                returnBO.setMsg("您尚未登录,请登录后重试!");
             }else{
-                result.put("code", 401);
-                result.put("msg", "登录用户已失效,请重新登录");
+                returnBO.setCode(401);
+                returnBO.setMsg("您尚未登录,请登录后重试!");
             }
         }
-        return result;
+        return returnBO;
     }
 
     /**

--
Gitblit v1.8.0