Spring Mvc拦截器实现session过期跳转到登录页面
- 配置拦截器
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**/*.html"/>
<bean class="com.rrtong.frame.plugins.SecurityInterceptor">
<property name="excludedUrls">
<list>
<value>/login.html</value>
<value>/auth.html</value>
</list>
</property>
</bean>
</mvc:interceptor>
</mvc:interceptors>
- 实现拦截器
package com.rrtong.frame.plugins; import java.util.List; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import com.rrtong.util.Constants; /*实现登录访问验证拦截器*/
public class SecurityInterceptor implements HandlerInterceptor {
/*过滤不需要验证的url*/
private List<String> excludedUrls; public void setExcludedUrls(List<String> excludedUrls) {
this.excludedUrls = excludedUrls;
} @Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
String requestUri = request.getRequestURI(); for (String url : excludedUrls) {
if (requestUri.endsWith(url)) {
return true;
}
} /*判断是否需要过滤的页面*/
HttpSession session = request.getSession(); if(session.getAttribute(Constants.Session.CURRENT_USER_ATTR_NAME) == null){
/*跳转到登录页*/
request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response); return false;
}
return true;
} @Override
public void postHandle(HttpServletRequest request, HttpServletResponse response,
Object arg2, ModelAndView arg3) throws Exception {
} @Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object arg2, Exception arg3)
throws Exception {
}
}