From 6b2f3024479140bb99a94128062c9ae541e99234 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 09 八月 2024 16:38:15 +0800
Subject: [PATCH] 用户token过滤,增加不过滤的URl

---
 pms-parent/pms-global/src/main/resources/application-global.yml                    |    8 +++-
 pms-parent/pms-common/src/main/java/com/dy/common/webFilter/UserTokenFilter.java   |   54 +++++++++++++++-----------
 pms-parent/pms-common/src/main/java/com/dy/common/webFilter/UserTokenNoFilter.java |   27 +++++++++++++
 3 files changed, 64 insertions(+), 25 deletions(-)

diff --git a/pms-parent/pms-common/src/main/java/com/dy/common/webFilter/UserTokenFilter.java b/pms-parent/pms-common/src/main/java/com/dy/common/webFilter/UserTokenFilter.java
index bff17e8..a398ef6 100644
--- a/pms-parent/pms-common/src/main/java/com/dy/common/webFilter/UserTokenFilter.java
+++ b/pms-parent/pms-common/src/main/java/com/dy/common/webFilter/UserTokenFilter.java
@@ -25,34 +25,42 @@
 
     @Override
     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
-        HttpServletRequest request = (HttpServletRequest) servletRequest;
-        HttpServletResponse response = (HttpServletResponse) servletResponse;
-        String token = request.getHeader(Constant.UserTokenKeyInHeader);
-        if(!StringUtils.isNullOrEmpty(token)){
-            UserTokenContext.set(token);
+        HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
+        String requestURI = httpRequest.getRequestURI();
+        // 妫�鏌ヨ姹傛槸鍚︿负闈炶繃婊ら」
+        if (UserTokenNoFilter.urls != null && UserTokenNoFilter.urls.stream().anyMatch(url -> requestURI.startsWith(url))) {
+            // 濡傛灉鏄潪杩囨护椤癸紝鐩存帴璋冪敤涓嬩竴涓繃婊ゅ櫒鎴杝ervlet
             filterChain.doFilter(servletRequest, servletResponse);
-        }else{
-            PrintWriter pw = null ;
-            try {
-                BaseResponse<?> res = BaseResponseUtils.buildToLogin() ;
-                String jsonString = JSON.toJSONString(res);
-                response.setCharacterEncoding("UTF-8");
-                response.setContentType("application/json; charset=utf-8");
-                pw = response.getWriter() ;
-                pw.write(jsonString);
-                pw.flush();
-            } catch (IOException e) {
-                e.printStackTrace();
-            }finally {
-                if(pw != null){
-                    pw.close();
+        } else {
+            // 濡傛灉涓嶆槸闈炶繃婊ら」锛屾墽琛岃繃婊ら�昏緫
+            HttpServletRequest request = (HttpServletRequest) servletRequest;
+            HttpServletResponse response = (HttpServletResponse) servletResponse;
+            String token = request.getHeader(Constant.UserTokenKeyInHeader);
+            if(!StringUtils.isNullOrEmpty(token)){
+                UserTokenContext.set(token);
+                filterChain.doFilter(servletRequest, servletResponse);
+            }else{
+                PrintWriter pw = null ;
+                try {
+                    BaseResponse<?> res = BaseResponseUtils.buildToLogin() ;
+                    String jsonString = JSON.toJSONString(res);
+                    response.setCharacterEncoding("UTF-8");
+                    response.setContentType("application/json; charset=utf-8");
+                    pw = response.getWriter() ;
+                    pw.write(jsonString);
+                    pw.flush();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }finally {
+                    if(pw != null){
+                        pw.close();
+                    }
                 }
+                //request.setAttribute(Constant.ErrorKeyInRequest, "鏈緱鍒扮敤鎴穞oken");
+                //response.sendRedirect("/error");
             }
-            //request.setAttribute(Constant.ErrorKeyInRequest, "鏈緱鍒扮敤鎴穞oken");
-            //response.sendRedirect("/error");
         }
     }
-
     @Override
     public void destroy() {
     }
diff --git a/pms-parent/pms-common/src/main/java/com/dy/common/webFilter/UserTokenNoFilter.java b/pms-parent/pms-common/src/main/java/com/dy/common/webFilter/UserTokenNoFilter.java
new file mode 100644
index 0000000..cae7094
--- /dev/null
+++ b/pms-parent/pms-common/src/main/java/com/dy/common/webFilter/UserTokenNoFilter.java
@@ -0,0 +1,27 @@
+package com.dy.common.webFilter;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/1 14:01
+ * @Description
+ */
+@Configuration
+@ConfigurationProperties(prefix = "tokennofilter")
+public class UserTokenNoFilter {
+
+    public static List<String> urls ;
+
+    public List<String> getUrls(){
+        return urls ;
+    }
+
+    public void setUrls(List<String> urls){
+        UserTokenNoFilter.urls = urls ;
+    }
+
+}
diff --git a/pms-parent/pms-global/src/main/resources/application-global.yml b/pms-parent/pms-global/src/main/resources/application-global.yml
index 18aa106..f9f3ba4 100644
--- a/pms-parent/pms-global/src/main/resources/application-global.yml
+++ b/pms-parent/pms-global/src/main/resources/application-global.yml
@@ -43,16 +43,20 @@
         cache-enabled: true  #鎵撳紑鍏ㄥ眬缂撳瓨寮�鍏筹紙浜岀骇鐜锛夛紝榛樿鍊兼槸true
         #default-enum-type-handler: com.dy.common.mybatis.envm.EnumCodeTypeHandler
 
+
+#涓嶈繘琛寀serToken杩囨护鐨刄RL锛孈ConfigurationProperties瑕佹眰tokennofilter涓墍鏈夊瓧姣嶉兘灏忓啓
+tokennofilter:
+    urls:
+        - /sso/sso
 pms:
     global:
         dev: true   #鏄惁寮�鍙戦樁娈碉紝true鎴杅alse锛屽紑鍙戦樁娈典笉杩涜鐧诲綍楠岃瘉鍙婃潈闄愰獙璇�
-        ssoUserExpireAfterAccess: 60  #sso鐧诲綍鍚庯紝鐢ㄦ埛鍦ㄤ竴瀹氭椂闂达紙ssoUserExpireAfterAccess锛夛紙鍒嗛挓锛夊唴鏈闂郴缁燂紝绯荤粺娓呴櫎缂撳瓨淇℃伅锛屼娇鐢ㄩ噸鏂扮櫥褰曠郴缁�
+        ssoUserExpireAfterAccess: 60  #sso鐧诲綍鍚庯紝鐢ㄦ埛鍦ㄤ竴瀹氭椂闂达紙ssoUserExpireAfterAccess锛夛紙鍒嗛挓锛夊唴鏈闂郴缁燂紝绯荤粺娓呴櫎缂撳瓨淇℃伅锛屼娇鍏堕噸鏂扮櫥褰曠郴缁�
         ssoCacheSizeInit: 10  #sso缂撳瓨鍒濆瀹归噺
         ssoCacheSizeMax: 10000  #sso缂撳瓨鏈�澶у閲忥紝鍗虫敮鎸乻soCacheSizeMax涓敤鎴峰悓鏃剁櫥褰�
     nginx:
         webPort: 8000
     sso:
-#        checkUrl: http://127.0.0.1:12344/sso/sso/ssoCheck
         checkUrl: http://127.0.0.1:12344/sso/sso/ssoPowerCheck
         curUserUrl: http://127.0.0.1:12344/sso/sso/ssoCurUser
         webPort: 12344

--
Gitblit v1.8.0