springSecurity的登录验证是由org.springframework.security.web.authentication.UsernamePasswordAuthenti
AuthenticationManager接口的相关类图如下:
UsernamePasswordAuthenti
1. 首先过滤器会调用自身的attemptAuthentication方法,从request中取出authentication, authentication是在org.springframework.security.web.context.SecurityContextPersisten
2. 拿到authentication对象后,过滤器会调用ProviderManager类的authenticate方法,并传入该对象
3.ProviderManager类的authenticate方法再调用自身的doAuthentication方法,在doAuthentication方法中会调用类中的List providers集合中的各个AuthenticationProvider接口实现类中的authenticate(Authentication authentication)方法进行验证,由此可见,真正的验证逻辑是由各个各个AuthenticationProvider接口实现类来完成的,DaoAuthenticationProvide
4.AuthenticationProvider接口通过UserDetailsService来获取用户信息
以下为时序图: