用户认证流程
在这里使用用户名密码的登录方式。
登录流程
通过UsernamePasswordAuthenticationFilter获取用户名和密码,并封装成UsernamePasswordAuthenticationToken。如下图:
再通过getAuthenticationManager()方法获取AuthenticationManager进行验证。如下图:
authenticate()方法如下图:
调用authentication.getClass()获取其类型,并调用getProviders().iterator()获取所有AuthenticationProvider的集合并获取迭代器进行遍历。在获取AuthenticationProvider后判断是否支持token(UsernamePasswordAuthenticationToken)类型,直到获取支持token类型的AuthenticationProvider进行认证并返回认证后的结果,如果认证后的结果不为null,则表示AuthenticationProvider认证成功。然后直接以该AuthenticationProvider的认证结果作为Provider