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

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 代码代码,如此循环往复!

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Ideality_hunter/article/details/51541267
博主设置当前文章不允许评论。

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭