关于登录filter拦截的一些思考

  问题导向的解决思路方法:

1、登录系统设计时,访问需要权限控制的页面时,需要检查每一个请求中的cookie是否有可访问标识,如果有则正常访问,如果没有则跳转到登录页面;(麻烦,增加代码量)

2、这个时候考虑可以用过滤器的方式,在有请求过来的时候我先把它拦截住,然后在里面做检查cookie的操作;(设计意图明了,去除重复代码)
3、但是如果访问的是登录页面时,过滤器也会把它拦截下来进行cookie的检查,这样导致了重定向循环的问题;(问题转移)
4、问题转移到了filter如何设置例外请求的方式;
5、我们可以在过滤器设置如果请求路径以login为开头,就直接放行;(查找资料)
6、后来又发现需要例外的地方有点多,比如退出接口和回调接口,也不需要进行检查cookie的检查,这样会导致判断条件增多,而且filter里面加了很多硬编码的东西也不好;(硬编码)
7、后来我发现可以通过在web.xml中设置初始化参数,将要例外的请求地址放入到初始化参数中,这样可以在过滤器中读取初始化参数,再进行判断;
8、问题得以解决,后来又看了些博客,感觉这样设计其实也挺麻烦的,再回到问题的根源,我们只是想拦截需要权限才能访问的页面进行权限的检查,那我们可以直接将所有这样的页面前面加一个统一的地址,比如admin/、passport/,这样过滤器只拦截urlpattern为admin的地址。(回归本源)
 
参考链接:
filter如何设置例外的请求:http://iqbon.iteye.com/blog/1894438
原文地址:https://www.cnblogs.com/dali-lyc/p/7295780.html