Browse Source

登陆页面自动登陆

sunyj 8 years ago
parent
commit
7c14c4e57b

+ 20 - 0
kanban-auth/src/main/java/com/uas/kanban/filter/SecurityInterceptor.java

@@ -3,6 +3,8 @@ package com.uas.kanban.filter;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
@@ -20,14 +22,32 @@ import com.uas.kanban.support.SystemSession;
 @Component
 public class SecurityInterceptor extends HandlerInterceptorAdapter {
 
+	private Logger logger = LoggerFactory.getLogger(getClass());
+
 	@Autowired
 	private SessionHelper sessionHelper;
 
 	@Override
 	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
 			throws Exception {
+		String requestURI = request.getRequestURI();
+		String contextPath = request.getContextPath();
+		// 获取(去除 context path 后的)请求的路径
+		String url = requestURI.substring(contextPath.length());
 		ResourcePoint resourcePoint = sessionHelper.readSession(request);
+
+		// 请求页面为 /login的话,特殊处理
+		if (url.equals("/login")) {
+			// session 中有登陆信息,重定向到首页
+			if (resourcePoint != null) {
+				response.sendRedirect("");
+			}
+			return true;
+		}
+
+		// session 中不存在登陆信息
 		if (resourcePoint == null) {
+			logger.info("No session for path: " + url + " , redirecting to page: login...");
 			response.sendRedirect("login");
 			return false;
 		}

+ 1 - 1
kanban-console/src/main/java/com/uas/kanban/WebAppConfiguration.java

@@ -119,7 +119,7 @@ public class WebAppConfiguration extends WebMvcConfigurerAdapter {
 		// 添加路径
 		registration.addPathPatterns("/**");
 		// 排除路径
-		registration.excludePathPatterns("/WEB-INF/**", "/login", "/error");
+		registration.excludePathPatterns("/WEB-INF/**", "/error");
 		// 排除路径,由spring boot security 进行验证
 		registration.excludePathPatterns("/console", "/fileUpload", "/**/delete/all", "/druid/**", "/user/**",
 				"/resourcePoint/**");