您的位置:首页 > 编程语言 > Java开发

spring mvc定义登录拦截器(不登录不让访问相关资源),为什么要放权/login.do(就是不拦截/login.do)?

2016-05-30 21:28 501 查看
spring.xml拦截器配置如下:

<mvc:interceptor>

<mvc:mapping path="/**" />
<mvc:exclude-mapping path="/login.do" />
<bean class="org.bjlx.base.login.AuthInterceptor"></bean>
</mvc:interceptor>

拦截器类配置如下:

public class AuthInterceptor implements HandlerInterceptor  {  

  

  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception {  

    Object sessionObj = request.getSession().getAttribute("USERDETAIL");  

    if(sessionObj!=null) {   

      return true;  

    }   

    response.sendRedirect("login.do");  

    return false;  

  }  

   

  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) throws Exception { }  

  

  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception e) throws Exception { }  

}  

如果对login.do进行放权的话,输入任何一个地址如:http://127.0.0.1:8080/test,就会一直在AuthInterceptor中挑不出来。

因为如果不放权/login.do,执行过程是这样的:

1输入http://127.0.0.1:8080/test

2被拦截器拦截,执行AuthInterceptor 代码,response.sendRedirect("login.do");  即执行http://127.0.0.1:8080/login.do,而login.do又被拦截器拦截,再次执行AuthInterceptor 代码代码,如此循环往复!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: