Filter装b失败 (doge
问题来源
- 对于最近的一个web项目,设置了filter对所有路径进行拦截,并当登录后及后台session存储到user对象后才可以放行访问菜单界面,但当第一次登陆后第二次再访问登录界面时会404!
造成原因
- 其实对于filter的拦截看似对未登录的请求进行拦截,使得所有未登录的请求都会跳转至登录界面,但其实埋了一个大隐患,即Tomcat的默认webx.xml为三个index命名的静态资源!!所以如果仅设置了拦截器,第一次访问服务器,因为filter全路径拦截,直接跳转到登录界面,给了人错觉即登陆界面通过拦截器设置为了主页,但其实tomcat访问的仍然为index静态资源,所以当登陆后,第二次访问服务器会404,因为此时后台session有了user,对于全路径的请求会放行,从而允许访问index,导致错误
解决方法
-
此次采用了更换Tomcat的主页即在web.xml配置主页的方法(安全第一!!)
-
其余办法:
- 构造新的index静态资源,重定向到登陆界面
- 设置拦截器链,对于请求更深层的拦截,若拦截到index,直接访问主页