概念

  • Authentication
  • AuthenticationDetails
  • Credential
  • Principal

    Principal

    可以参考这篇文章来理解:Spring Security 什麼是 Principal
    我将它理解为当前发出操作请求的主体,可以是匿名用户,登录用户,管理员用户等等。

    Credential

    可以参考这篇文章来理解:Spring Security 什麼是 Credential
    我将它理解为验证当前操作主体的一组信息,比如一个 Token 对象。

    AuthenticationDetails

    和上边的 Credential 很容易搞混,这个是从客户端收集到的验证主体真实性的信息,而 Credential 是验证通过后生成的证书。

    代码准备流程

  1. AuthenticationDetails,这个类用来保存验证用户的请求信息;
  2. Authentication,这个类用来保存当前请求的所有信息和状态;
  3. AuthenticationProvider,这个是我们验证用户身份的逻辑实现类,
  4. AuthenticationEntryPoint,这个类用来处理验证过程中出现的所有异常错误;
  5. AuthenticationFilter,这个是开始我们自己验证逻辑的入口。
  6. WebSecurityConfigurer,配置我们自己的验证

    逻辑验证流程

  7. AuthenticationFilter,进入我们的验证过滤器

  8. AuthenticationDetails,收集验证所需的资料
  9. AuthenticationProvider,开始验证
  10. Authentication,存储当前的验证信息
  11. FilterChain,继续向下的流程