流程分析
1. 请求 /hello 接口,在引入 spring security 之后会先经过一些列过滤器
-
在请求到达 FilterSecurityInterceptor时,发现请求并未认证。请求拦截下来,并抛出AccessDeniedException 异常。
-
抛出 AccessDeniedException 的异常会被 ExceptionTranslationFilter 捕获,这个 Filter 中会调用 LoginUrlAuthenticationEntryPoint#commence 方法给客户端返回 302,要求客户端进行重定向到 /ogin 页面。
-
客户端发送 /login 请求。
-
/login 请求会再次被拦截器中 DefaultLoginPageGeneratingFilter 拦截到,并在拦截器中返回生成登录页面。
就是通过这种方式,SpringSecurity 默认过滤器中生成了登录页面,并返回!