400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

浅析SpringSecurity登录验证流程源码-创新互联

一、登录认证基于过滤器链

站在用户的角度思考问题,与客户深入沟通,找到怒江州网站设计与怒江州网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、网站制作、企业官网、英文网站、手机端网站、网站推广、域名注册虚拟主机、企业邮箱。业务覆盖怒江州地区。

Spring Security的登录验证流程核心就是过滤器链。当一个请求到达时按照过滤器链的顺序依次进行处理,通过所有过滤器链的验证,就可以访问API接口了。

浅析Spring Security登录验证流程源码

SpringSecurity提供了多种登录认证的方式,由多种Filter过滤器来实现,比如:

根据我们不同的需求实现及配置,不同的Filter会被加载到应用中。

二、结合源码讲解登录验证流程

我们就以用户名、密码登录方式为例讲解一下Spring Security的登录认证流程。

浅析Spring Security登录验证流程源码

2.1 UsernamePasswordAuthenticationFilter

该过滤器封装用户基本信息(用户名、密码),定义登录表单数据接收相关的信息。如:

浅析Spring Security登录验证流程源码
浅析Spring Security登录验证流程源码

2.2 AbstractAuthenticationProcessingFilter的doFilter方法的验证过程

UsernamePasswordAuthenticationFilter继承自抽象类AbstractAuthenticationProcessingFilter,该抽象类定义了验证成功与验证失败的处理方法。

浅析Spring Security登录验证流程源码

2.3 验证成功之后的Handler和验证失败之后的handler

浅析Spring Security登录验证流程源码

也就是说当我们需要自定义验证成功或失败的处理方法时,要去实现AuthenticationSuccessHandler或AuthenticationfailureHandler接口

浅析Spring Security登录验证流程源码

三、登录验证内部细节

3.1多种认证方式的管理 ProviderManager

ProviderManager用继承于AuthenticationManager是登录验证的核心类。ProviderManager保管了多个AuthenticationProvider,用于不同类型的登录验证。比如:

public class ProviderManager implements AuthenticationManager, MessageSourceAware, InitializingBean {
    ……
    private List providers;
    ……

下文是ProviderManager的核心源码,遍历不同登录验证的AuthenticationProvider,只有当这种方式被支持的时候,才执行具体的登录验证逻辑。

浅析Spring Security登录验证流程源码

3.2 登录认证接口 AuthenticationProvider

public interface AuthenticationProvider {
 Authentication authenticate(Authentication var1) throws AuthenticationException;
 boolean supports(Class<?> var1);
}

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享名称:浅析SpringSecurity登录验证流程源码-创新互联
网站地址:http://www.bluegullmedia.com/article/ghspd.html

其他资讯

让你的专属顾问为你服务

0.0558s