SpringSecurity的基本登录流程
1.几个重要的成员
1.1 Authentication
1)Authentication对象主要保存用户的一些基本信息,用户名,密码,权限等
2)其下还有多个实现类,UsernamePasswordAuthenticationToken用得最多,每个不同的token登录都会有对应一个AuthenticationProvider,比如UsernamePasswordAuthenticationToken它就有一个AbstractUserDetailsAuthenticationProvider
1.2 AuthenticationProvider
1)AuthenticationProvider接口,认证提供者,提供authenticate和support方法,有多个实现类
1.3 AuthenticationManager
1)AuthenticationManager接口,认证管理者,用于管理AuthenticationProvider,定义了一个authenticate方法,用于做认证
1.4 ProviderManager
1)ProviderManager是AuthenticationManager的实现类,用于管理AuthenticationProvider,定义了一个list来管理
2.基本流程(基于用户名密码登录)
2.1 主要成员
2.1 流程
1)请求来到UsernamePasswordAuthenticationFilter,获取前端传来的用户名和密码,并且调用authenticate方法
2)进入到ProviderManager的authenticate方法,遍历providers
3)进入到AbstractUserDetailsAuthenticationProvider,执行authenticate方法
4)校验用户和密码
5)将用户相关信息存储到authentication对象,并且返回