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