浏览代码

simplify SecurityInterceptor

sunyj 8 年之前
父节点
当前提交
b794665fe1
共有 1 个文件被更改,包括 24 次插入32 次删除
  1. 24 32
      kanban-auth/src/main/java/com/uas/kanban/filter/SecurityInterceptor.java

+ 24 - 32
kanban-auth/src/main/java/com/uas/kanban/filter/SecurityInterceptor.java

@@ -67,49 +67,41 @@ public class SecurityInterceptor extends HandlerInterceptorAdapter {
         // 请求页面为 /login的话,特殊处理
         if (url.equals("/login")) {
             // session 中有登陆信息,重定向到首页
-            if (user != null) {
-                response.sendRedirect("");
-                return false;
-            }
             // 没有登陆信息,则尝试自动登陆
-            user = autoLogin(request);
-            if (user != null) {
+            if (user != null || autoLogin(request) != null) {
                 response.sendRedirect("");
                 return false;
             }
             return true;
         }
 
-        // session 中不存在登陆信息
-        if (user == null) {
-            // 尝试自动登陆
-            user = autoLogin(request);
-            if (user == null) {
-                logger.info("No session for path: " + url);
-                // 如果是 XMLHttpRequest ,抛出异常,否则重定向
-                if (Objects.equals("XMLHttpRequest", request.getHeader("X-Requested-With"))) {
-                    throw new SecurityException("未登录");
-                }
-                String returnUrl = request.getRequestURL().toString();
-                String queryString = request.getQueryString();
-                if (!StringUtils.isEmpty(queryString)) {
-                    returnUrl += "?" + queryString;
+        // session 中有登陆信息,进行下一步
+        // 没有登陆信息,则尝试自动登陆
+        if (user != null || (user = autoLogin(request)) != null) {
+            // 只允许管理员访问
+            if (user.getRole() != Role.Admin) {
+                for (String pattern : this.adminPatterns) {
+                    if (pathMatcher.match(pattern, url)) {
+                        throw new OperationException("权限不足");
+                    }
                 }
-                response.sendRedirect(contextPath + "/login?returnUrl=" + URLEncoder.encode(returnUrl, "UTF-8"));
-                return false;
             }
-        }
-
-        // 只允许管理员访问
-        if (user.getRole() != Role.Admin) {
-            for (String pattern : this.adminPatterns) {
-                if (pathMatcher.match(pattern, url)) {
-                    throw new OperationException("权限不足");
-                }
+            SystemSession.setUser(user);
+            return true;
+        } else {
+            logger.info("No session for path: " + url);
+            // 如果是 XMLHttpRequest ,抛出异常,否则重定向
+            if (Objects.equals("XMLHttpRequest", request.getHeader("X-Requested-With"))) {
+                throw new SecurityException("未登录");
+            }
+            String returnUrl = request.getRequestURL().toString();
+            String queryString = request.getQueryString();
+            if (!StringUtils.isEmpty(queryString)) {
+                returnUrl += "?" + queryString;
             }
+            response.sendRedirect(contextPath + "/login?returnUrl=" + URLEncoder.encode(returnUrl, "UTF-8"));
+            return false;
         }
-        SystemSession.setUser(user);
-        return true;
     }
 
     /**