From b6dee87c91bfdcb68fcc456c9a2ec46b2ed7cbe3 Mon Sep 17 00:00:00 2001
From: dangsn <dangsn@chicecm.com>
Date: 星期二, 11 六月 2024 12:33:35 +0800
Subject: [PATCH] 登录和权限校验功能

---
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/interceptor/VciSecurityInterceptor.java |   59 ++++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 36 insertions(+), 23 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/interceptor/VciSecurityInterceptor.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/interceptor/VciSecurityInterceptor.java
index 5be623c..932537b 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/interceptor/VciSecurityInterceptor.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/interceptor/VciSecurityInterceptor.java
@@ -72,36 +72,32 @@
         if(!(handler instanceof  HandlerMethod)){
             return true;
         }
-        List<String> unCheckUrls = new ArrayList<>();
-        if(springMVCConfig !=null && springMVCConfig.getUnCheckUrls() !=null){
-            unCheckUrls = springMVCConfig.getUnCheckUrls();
-        }
-        SessionInfo sessionInfo = null;
-        if(StringUtils.isNotBlank(userToken)){
-            try{
-                sessionInfo = sessionForLoginI.getSessionInfoByToken(userToken);
-            }catch (Throwable e){
-                logger.error("鑾峰彇token鍑洪敊",e);
-                //sendErrorMsg(response,"鑾峰彇token鐨勪俊鎭嚭閿欙紝" + userToken + "," + LangBaseUtil.getErrorMsg(e),1);
-                //return false;
-            }
-            if(sessionInfo!=null){
-                WebThreadLocalUtil.getCurrentUserSessionInfoInThread().set(sessionInfo);
-            }
-        }
+
+        boolean unCheckLogin = false;
         if(handler instanceof  HandlerMethod) {
             HandlerMethod hm = (HandlerMethod)handler;
             Method method = hm.getMethod();
             //璁剧疆浜嗕笉鏍¢獙鐨勪細鐩存帴杩斿洖true
             if (method.isAnnotationPresent(VciUnCheckRight.class)) {
-                return true;
+                unCheckLogin = true;
             }
             if (method.getDeclaringClass().isAnnotationPresent(VciUnCheckRight.class)) {
-                return true;
+                unCheckLogin = true;
             }
         }
         if(url.endsWith(".md")){
+            unCheckLogin = true;
+        }
+        if(unCheckLogin){
+            //铏界劧涓嶆牎楠屾潈闄愶紝浣嗘槸濡傛灉token涓嶄负绌猴紝闇�瑕佹洿鏂板綋鍓嶇敤鎴�
+            SessionInfo sessionInfo = getSessionInfo(userToken);
+
             return true;
+        }
+        //鑾峰彇閰嶇疆鏂囦欢涓紝涓嶆牎楠屾潈闄愮殑璺緞
+        List<String> unCheckUrls = new ArrayList<>();
+        if(springMVCConfig !=null && springMVCConfig.getUnCheckUrls() !=null){
+            unCheckUrls = springMVCConfig.getUnCheckUrls();
         }
         if(StringUtils.isBlank(userToken) && !unCheckUrls.contains(url)){
             //璇存槑鏄病鏈夌敤鎴蜂俊鎭殑锛岃�屼笖涔熷繀椤昏鏍¢獙鏄惁鐧诲綍鐨勬儏鍐�
@@ -111,14 +107,15 @@
             }
             sendErrorMsg(response,"娌℃湁鐧诲綍绯荤粺锛岃鍏堢櫥褰�",1);
             return false;
-            //琚玊涓嬬嚎鐢眞ebsocket鐩存帴鎻愰啋
+            //琚涪涓嬬嚎鐢眞ebsocket鐩存帴鎻愰啋
         }else{
+            SessionInfo sessionInfo = getSessionInfo(userToken);
             if(sessionInfo == null){
-                //涔熸槸璇存槑涓嶅瓨鍦紝琚玊涓嬬嚎鏃朵篃鑾峰彇涓嶅埌session鐨勪俊鎭簡
+                //涔熸槸璇存槑涓嶅瓨鍦紝琚涪涓嬬嚎鏃朵篃鑾峰彇涓嶅埌session鐨勪俊鎭簡
                 if(logger.isErrorEnabled()) {
-                    logger.error("token鍊奸潪娉曪紝鎴栬�呯敤鎴峰凡缁忚韪笅绾�," + userToken);
+                    logger.error("token鍊奸潪娉曪紝鎴栬繃鏈燂紝鎴栬�呯敤鎴峰凡缁忚韪笅绾�," + userToken);
                 }
-                sendErrorMsg(response,"token鍊奸潪娉曪紝鎴栬�呯敤鎴峰凡缁忚韪笅绾�," + userToken,1);
+                sendErrorMsg(response,"token鍊奸潪娉曪紝鎴栬繃鏈燂紝鎴栬�呯敤鎴峰凡缁忚韪笅绾�," + userToken,1);
                 return false;
             }else{
                 if(!unCheckUrls.contains(url)){
@@ -155,6 +152,22 @@
         return true;
     }
 
+    private SessionInfo getSessionInfo(String userToken){
+        SessionInfo sessionInfo = null;
+        if(StringUtils.isNotBlank(userToken)){
+            try{
+                sessionInfo = sessionForLoginI.getSessionInfoByToken(userToken);
+            }catch (Throwable e){
+                logger.error("鑾峰彇token鍑洪敊",e);
+            }
+            if(sessionInfo!=null){
+                WebThreadLocalUtil.setCurrentUserSessionInfoInThread(sessionInfo);
+                WebThreadLocalUtil.setTokenInThread(TokenKeyConstant.TOKEN_KEY_PREFIX_IN_REDIS+sessionInfo.getToken());
+            }
+        }
+        return sessionInfo;
+    }
+
     /**
      * 杩斿洖閿欒淇℃伅
      * @param response 鐩稿簲瀵硅薄

--
Gitblit v1.9.3