SpringSecurity认证流程
2022-08-06 12:30:54 0 举报
123
作者其他创作
大纲/内容
UsernamePasswordAuthenticationFilter
Request
AbstractAuthenticationProcessingFilter
AuthenticationManager
UserDetailsService
AbstractAuthenticationProcessingFilter ==》 doFilter()↓doFilter()中 调用 UsernamePasswordAuthenticationFilter 实现的 attempAuthentication() ,最终要返回Authentication对象↓attempAuthentication() 中,先从请求中getParamter(),获取提交的username和password,封装成 Authentication对象(仅包含用户名和密码,且状态为unauthencated)然后获取接口类的属性 AuthenticationManager,调用其authencate() 方法
实际类型
InMemoryUserDetailsManager
ProviderManager
请求进入Filter
DaoAuthenticationProvider
UserDetailsManager
接口
authenticate() 方法中 调用 retriveUser() 方法retriveUser() 方法,调用该provider认证器拥有的UserDetailService (默认实现类是InMemoryUserDetailManager)的 loadUserByUsername(username) 方法 根据username 获取密码(从数据库或内存)
AbstractUserDetailsAuthenticationProvider
ProviderManager中有 providers,认证器list,找到匹配的认证器,表单认证与之匹配的认证器是DaoAuthenticationProvider调用认证器的authenticate()方法
AuthenticationProvider
收藏
收藏
0 条评论
回复 删除
下一页