1.一个请求过来,首先得走完 过滤器链,才执行 请求ur资源
2.如果在这个过程中 出现了请求转发,那么等于 在这个过滤器方法调用了servlet的方法,servlet方法执行完还是在这个过滤器,继续往下执行,简单来说就是 这个 过滤器方法调用一个servlet方法,仅此而已
3.如果 在这个过滤器方法中,请求重定向,那么就是重新发一次请求,又会 重新从 过滤器链的 头走到 尾
4.例如在,springsecurity的 自定义 formLogin 页面
http.formLogin()// 开启表单认证
.loginPage(“/toLoginPage”)// 自定义登录页面
.loginProcessingUrl(“/login”)//表单提交的路径
.and().authorizeRequests().antMatchers(“/toLoginPage”).permitAll()//放行登录页面
.anyRequest().authenticated();
为什么要 放行 /toLoginPage ,就是因为,你请求过来,走security的 15个过滤器 的 过滤器链,如果判断你没有登入,那么就会 请求重定向到 login.html , 而 新的一次请求,也会走过滤器,这时又会判断你没有登入,这时你到不了 login.html, 所以 你会一直重定向导致重定向次数过多,所以 对于 login.html 我们都是放行的
本文解析了Spring Security中的过滤器链机制,重点讲解了请求转发、重定向操作如何影响过滤器流程,并以formLogin为例说明为何要放行/login页面。
944

被折叠的 条评论
为什么被折叠?



