上篇回顾
上篇介绍了HttpSecurity
如何建造过滤器链,本文主要介绍几个主要的过滤器。
认证过滤器 UsernamePasswordAuthenticationFilter
参数有username
,password
的,走UsernamePasswordAuthenticationFilter
,提取参数构造UsernamePasswordAuthenticationToken
进行认证,成功则填充SecurityContextHolder的Authentication
UsernamePasswordAuthenticationFilter
实现了其父类AbstractAuthenticationProcessingFilter
中的attemptAuthentication
方法。这个方法会调用认证管理器AuthenticationManager
去认证。
AbstractAuthenticationProcessingFilter
中的doFilter()
方法,会判断每个请求是否需要认证。
不需要认证的请求直接放行,需要的认证的会被拦下。
判断是否需要认证是怎么做的呢?
其实是我们在调用httpSecurity.formLogin().permitAll()
时设置的。