1.为什么要登陆拦截
在未登录之前,我们并不希望用户可以看见里面的内容,这时候就要设置拦截器,只有登陆之后的用户才可以看见里面的内容。
2.实现思路
使用拦截器,判断session里是否有用户信息,若有,则放行,若没有,则重定向到登陆页面。
3.springMVC配置
<!--配置拦截器-->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/home/**"></mvc:exclude-mapping>
<mvc:exclude-mapping path="/**/*.css"/>
<mvc:exclude-mapping path="/**/*.js"/>
<mvc:exclude-mapping path="/**/*.png"/>
<mvc:exclude-mapping path="/**/*.gif"/>
<mvc:exclude-mapping path="/**/*.jpg"/>
<mvc:exclude-mapping path="/**/*.jpeg"/>
<mvc:exclude-mapping path="/registerUser"></mvc:exclude-mapping>
<mvc:exclude-mapping path="/checkId"></mvc:exclude-mapping>
<mvc:exclude-mapping path="/register"></mvc:exclude-mapping>
<bean class="com.sustly.interceptors.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
配置拦截所有请求,除了登陆注册页面以及静态资源文件。
4.Interceptor类编写
public class LoginInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
String id = (String) request.getSession().getAttribute("id");
if(id == null) {
response.sendRedirect("/home/login");
return false;
}else {
return true;
}
}
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
}
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
}
}