扫码阅读
手机扫码阅读

SpringSecurity 用户名密码登录认证

188 2024-08-23

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:SpringSecurity 用户名密码登录认证
文章来源:
DevXTalk
扫码关注公众号

SpringSecurity用户名密码登录认证摘要

UserDetailsService & DaoAuthenticationProvider

UserDetailsService 用于加载用户信息,而 DaoAuthenticationProvider 通过 UserDetailsService 实现用户认证。DaoAuthenticationProvider 是 AbstractUserDetailsAuthenticationProvider 的子类,提供模板方法用于加载用户信息并进行认证。

UsernamePasswordAuthenticationFilter & AbstractAuthenticationProcessingFilter

UsernamePasswordAuthenticationFilter 拦截登录请求,生成 UsernamePasswordAuthenticationToken 并调用 AuthenticationManager 的 authenticate 方法进行认证。认证成功后会调用 successHandler,失败则调用 failureHandler。这个过滤器是 AbstractAuthenticationProcessingFilter 的子类,后者提供模板方法供子类实现具体认证逻辑。

FormLoginConfigurer & AbstractAuthenticationFilterConfigurer

FormLoginConfigurer 继承自 AbstractAuthenticationFilterConfigurer,用于配置表单登录,包括用户名密码参数名称、登录url等,并构建 HttpSecurityBuilder 以创建 DefaultSecurityFilterChain

DaoAuthenticationProvider 认证流程

DaoAuthenticationProvider 重写了 retrieveUser 方法以加载和认证用户信息,包括处理用户名未找到的情况,以及进行密码匹配。在登录成功后,会通过 createSuccessAuthentication 方法创建成功的认证对象,并可进行密码升级。

AbstractUserDetailsAuthenticationProvider

这是 DaoAuthenticationProvider 的父类,设计用于响应 UsernamePasswordAuthenticationToken 认证请求。处理缓存用户信息,并在必要时从数据源重新加载用户数据,最后创建认证成功的 Authentication 对象。

PasswordEncoder

PasswordEncoder 是密码加密器接口,用于加密密码和匹配原始密码与加密密码。还可以用于升级加密算法。

AbstractAuthenticationFilterConfigurer & HttpSecurity

AbstractAuthenticationFilterConfigurer 作为认证过滤器的配置基类,实现了抽象方法 init() 和 configure(),并将配置的过滤器添加到 HttpSecurityBuilder 中。最终,HttpSecurity 构建出 DefaultSecurityFilterChain

文章提醒读者加入 DevXTalk 技术交流群以促进知识分享和行业经验交流,并鼓励转发文章扩散知识。

想要了解更多内容?

查看原文:SpringSecurity 用户名密码登录认证
文章来源:
DevXTalk
扫码关注公众号