spring 登入session攔截器
阿新 • • 發佈:2018-12-05
import com.ibeetl.admin.core.service.CorePlatformService; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @Configuration public class WebMvcConfig implements WebMvcConfigurer { /** * 註冊攔截器 */ @Override public void addInterceptors(InterceptorRegistry registry) { //addPathPattern後跟攔截地址,excludePathPatterns後跟排除攔截地址 registry.addInterceptor(new MyInterceptor()) .addPathPatterns("/**") .excludePathPatterns("/login.do") //登入頁面 .excludePathPatterns("/register.do") //註冊頁面 .excludePathPatterns("/register.json"); //註冊方法 } class MyInterceptor implements HandlerInterceptor { //在請求處理之前進行呼叫(Controller方法呼叫之前 @Override public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { HttpSession session = httpServletRequest.getSession(); String user = (String) session.getAttribute("loginUser"); //獲取登入的session資訊 if(user!=null){ return true; } else{ httpServletResponse.sendRedirect(httpServletRequest.getContextPath()+"/login.do"); //未登入自動跳轉介面 return false; } } //請求處理之後進行呼叫,但是在檢視被渲染之前(Controller方法呼叫之後) @Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { System.out.println("postHandle被呼叫\n"); } //在整個請求結束之後被呼叫,也就是在DispatcherServlet 渲染了對應的檢視之後執行(主要是用於進行資源清理工作) @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { System.out.println("afterCompletion被呼叫\n"); } } }