一、登录认证基于过滤器链
Spring Security的登录验证流程核心就是过滤器链。当一个请求到达时按照过滤器链的顺序依次进行处理,通过所有过滤器链的验证,就可以访问API接口了。
SpringSecurity提供了多种登录认证的方式,由多种Filter过滤器来实现,比如:
根据我们不同的需求实现及配置,不同的Filter会被加载到应用中。
二、结合源码讲解登录验证流程
我们就以用户名、密码登录方式为例讲解一下Spring Security的登录认证流程。
2.1 UsernamePasswordAuthenticationFilter
该过滤器封装用户基本信息(用户名、密码),定义登录表单数据接收相关的信息。如:
2.2 AbstractAuthenticationProcessingFilter的doFilter方法的验证过程
UsernamePasswordAuthenticationFilter继承自抽象类AbstractAuthenticationProcessingFilter,该抽象类定义了验证成功与验证失败的处理方法。
2.3 验证成功之后的Handler和验证失败之后的handler
也就是说当我们需要自定义验证成功或失败的处理方法时,要去实现AuthenticationSuccessHandler或AuthenticationfailureHandler接口
三、登录验证内部细节
3.1多种认证方式的管理 ProviderManager
ProviderManager用继承于AuthenticationManager是登录验证的核心类。ProviderManager保管了多个AuthenticationProvider,用于不同类型的登录验证。比如:
public class ProviderManager implements AuthenticationManager, MessageSourceAware, InitializingBean {
……
private List
……
下文是ProviderManager的核心源码,遍历不同登录验证的AuthenticationProvider,只有当这种方式被支持的时候,才执行具体的登录验证逻辑。
3.2 登录认证接口 AuthenticationProvider
public interface AuthenticationProvider { Authentication authenticate(Authentication var1) throws AuthenticationException; boolean supports(Class<?> var1); }
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款