springSecurity学习总结

1.usernamepasswordauthticationfilter

处理表单的核心拦截器。拦截指定的url路径,提取用户名和密码,创建一个usernamepasswordauthenticationtoken都想给authenticationmanager进行认证。

作用:接受用户提交的用户名和密码,验证用户信息。

如何工作:通过attenptauthentication()方法获取请求中的用户名和密码,创建usernamepasswordauthenticationtoken都对象,传递给AuthenticationManager 进行认证。

2.usernamepassword authentcationtoken

这是表示认证请求的核心类。他是authentiction接口的实现类。用于封装用户名和密码。

作用:封装用户名。密码以及其他认证信息。

3.authenticationmanager

用于认证的接口。负责对authentiction对象进行认证,返回已经认证authtication对象。

作用:接受authentication对象,进行用户认证,返回一个认证后的authentication对象,

如何工作:authenticationmamager 会将请求为投给authenticationprovider认证,

4.daoauthenticationrpivider

常用的认证提供则,负责从数据库加载用户信息验证,通过userdetaservice加载用户信息,比对提供的密码是否正确。

作用:

通过userdetailservice

从数据库或其他地方加载哦用户详细信息,返回一个userdetial接口的对象,yserdetail包含了用户的用户名,密码和权限等等

作用:加载用户的详细信息(用户名,密码,权限)

userdetailservice实现类会查询数据库或其他数据元,获取用户信息,loadUserByUsername() 方法是关键方法。。

userdetails

这是一个接口,表示用户详情,userdetails通常由userdetailservice实现类返回,用于存储基本信息

  • 作用:封装用户的详细信息,如用户名、密码、角色、权限等。
  • 如何工作UserDetails 中包含用户的基本信息,并提供用户权限的集合。

securitycontextholder

securittycontextholder是springsecurity存储当前用户信息的地方,认证成功后,securitycontextholder会存储一个authentication对象

,表示当前的状态。

作用:存储认证信息

如何工作:再认证success后,securitycontextholder 会存储authwntication对象,后续通过securitycontextholder.getcontxtt.getauthentication获取当前都西昂的认证信息

Authentication

这是一个接口,表示用户的认证信息。它包含了用户名、密码、权限等信息。在认证过程中,Authentication 对象会被传递和更新

作用:表示认证信息

如何让工作:authentication对象看可以通过autheniationmanager继续宁认证,认证成功后,他会包含用户的角色,全选等

passwordencoder

这是一个接口,用于对密码进行加密和匹配。Spring Security 提供了多个实现,例如 BCryptPasswordEncoderNoOpPasswordEncoder 等。通常在用户登录时,会将输入的密码和数据库中的密码进行比对,PasswordEncoder 用于这一操作。

  • 作用:加密和匹配密码。
  • 如何工作:当用户登录时,PasswordEncoder 会将提供的密码与数据库中加密后的密码进行匹配,如果一致,则认证成功。

ExceptionTranslationFilter

当认证或授权过程中发生异常时,ExceptionTranslationFilter 会拦截异常,并根据异常类型返回相应的响应。例如,当认证失败时,它会返回 401 状态码;当用户没有权限时,它会返回 403 状态码。

登录流程:

  • 用户提交登录表单:用户通过 POST 请求提交包含用户名和密码的表单。
  • UsernamePasswordAuthenticationFilter 拦截请求:该过滤器拦截请求,并从请求中提取用户名和密码,创建一个 UsernamePasswordAuthenticationToken 对象。
  • AuthenticationManager 认证:将 UsernamePasswordAuthenticationToken 对象传递给 AuthenticationManager,由 AuthenticationManager 选择合适的 AuthenticationProvider(如 DaoAuthenticationProvider)进行认证。
  • DaoAuthenticationProvider 加载用户信息DaoAuthenticationProvider 会调用 UserDetailsService 从数据库中加载用户信息,并验证密码是否正确。
  • 认证成功:认证成功后,UsernamePasswordAuthenticationToken 会被填充,包含用户的权限信息,存储到 SecurityContextHolder 中,表示当前用户已认证。
  • 认证失败:认证失败时,ExceptionTranslationFilter 会处理失败的异常,通常会返回 401 或 403 错误
  • 这些类共同作用实现了基于表单的认证过程:

    • UsernamePasswordAuthenticationFilter 负责从表单中提取用户信息。
    • AuthenticationManager 负责进行认证。
    • DaoAuthenticationProviderUserDetailsService 用于验证用户名和密码。
    • SecurityContextHolder 存储认证信息。

     

posted @   langpo  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验
历史上的今天:
2024-01-11 redis
点击右上角即可分享
微信分享提示