SpringSecurity学习(一)
Spring Security帐号密码认证
相关类图
相关时序图
流程解释
- UsernamePasswordAuthenticationFilter类继承AbstractAuthenticationProcessingFilter类,该类调用attemptAuthentication方法,
该方法现将用户名及密码通过UsernamePasswordAuthenticationToken.unauthenticated()方法封装成UsernamePasswordAuthenticationToken对象(即Authentication对象),
再调用 this.getAuthenticationManager().authenticate()方法 - AuthenticationManager接口找到ProviderManager实现类的authenticate()方法,通过getProviders()方法遍历AuthenticationProvider集合,找到
AbstractUserDetailsAuthenticationProvider类调用authenticate()方法 - AbstractUserDetailsAuthenticationProvider类的authenticate()方法需要调用子类DaoAuthenticationProvider的retrieveUser()方法
- retrieveUser()方法调用UserDetailsService接口的loadUserByUsername()方法,因此UserDetailsService接口需要用户实现其方法
- loadUserByUsername()方法调用完毕需要返回UserDetails对象,UserDetails是个接口,仍需要用户实现