美文网首页
Spring Security用户名密码登陆分析

Spring Security用户名密码登陆分析

作者: JetBean | 来源:发表于2018-12-12 23:44 被阅读0次

       最近在做Spring Security 单点集成的SSO项目,项目完成后,索性就研究了下其底层源码的具体实现。接下来,为大家分享一下用户名密码登陆的源码解析:

        首先,我们来看下下面这张类图。

    登陆流程类图

    1,顶层的抽象父类过滤器AbstractUserDetailsAuthenticationProvider是整个登陆流程的开始。在父类过滤器里面,会先执行子类UsernamePasswordAuthenticationFilter过滤器的一个方法:attemptAuthentication()

    2,AuthenticationManager 实例化出来一个AuthenticationProvider 然后再AuthenticationProvider里面进行校验 不通的登陆方式不一样 我们表单提交是用户名密码登陆,ProviderManager负责收集所有的AuthenticationProvider 然后循环遍历调用supports 看是否是用户名密码的登陆方式,主要是查看类是否是UsernamePasswordAuthenticationToken 这个类,初始化的时候设置为false

    3,DaoAuthenticationProvider 里面拿到UserDetails

    4,预检查查看用户是否冻结,是否锁定,检查密码是否正确,具体检查可以跟进代码去看一下

    5,所有的检查成功,则返回AbstractUserDetailsAuthenticationProvider

    6,最后设置授权为true已授权

    7,所有认证通过,返回一个Authentication,然后把数据保存到会话中。最后沿路返回。AbstractAuthenticationProcessingFilter 在这里设置成功失败过滤器,也就是自己定义的过滤器

    8,如果认证失败,则会抛出异常,走自己定义的失败过滤器

    以上:则是主要的用户名密码登陆流程。

    相关文章

      网友评论

          本文标题:Spring Security用户名密码登陆分析

          本文链接:https://www.haomeiwen.com/subject/qrpmhqtx.html