关闭

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

1786人阅读 评论(0) 收藏 举报

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:626055次
    • 积分:13990
    • 等级:
    • 排名:第921名
    • 原创:828篇
    • 转载:26篇
    • 译文:0篇
    • 评论:0条
    博客专栏