Procházet zdrojové kódy

增加先行校验,处理服务器多次刷新导致用户信息不存在的问题

hejq před 7 roky
rodič
revize
41ac1a8e12

+ 27 - 24
src/main/java/com/uas/platform/b2b/manage/web/filter/SSOInterceptor.java

@@ -42,33 +42,36 @@ public class SSOInterceptor extends HandlerInterceptorAdapter implements Filter
     }
 
     private final boolean authenticate(HttpServletRequest request, HttpServletResponse response) throws IOException {
-        Cookie[] cookies = request.getCookies();
-        List<Cookie> cookieList = new ArrayList<>();
-        if (null != cookies) {
-            cookieList = Arrays.asList(cookies);
-        }
-        final boolean[] cookieExist = {false};
-        boolean cookieFlag = checkCookie(cookieExist, cookieList, request);
-        if (!cookieFlag) {
-            if (!this.onAuthenticateFailed(request, response)) {
-                return false;
-            } else {
-                return true;
-            }
-        }
-        // 通过HttpServletRequest获取登录信息
-        logSession(request);
         User user = SystemSession.getUser();
-        // 未登录则要求登录
-        if (user == null) {
-            logoutSession(request);
-            if (!this.onAuthenticateFailed(request, response)) {
-                return false;
+        if (null == user) {
+            Cookie[] cookies = request.getCookies();
+            List<Cookie> cookieList = new ArrayList<>();
+            if (null != cookies) {
+                cookieList = Arrays.asList(cookies);
+            }
+            final boolean[] cookieExist = {false};
+            boolean cookieFlag = checkCookie(cookieExist, cookieList, request);
+            if (!cookieFlag) {
+                if (!this.onAuthenticateFailed(request, response)) {
+                    return false;
+                } else {
+                    return true;
+                }
+            }
+            // 通过HttpServletRequest获取登录信息
+            logSession(request);
+            user = SystemSession.getUser();
+            // 未登录则要求登录
+            if (user == null) {
+                logoutSession(request);
+                if (!this.onAuthenticateFailed(request, response)) {
+                    return false;
+                } else {
+                    return true;
+                }
             } else {
-                return true;
+                checkLogin(response);
             }
-        } else {
-            checkLogin(response);
         }
         return true;
     }