Spring Security认证流程

这边项目在用户登录的时会调用

复制代码
private final AuthenticationManager authenticationManager;
authentication = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(
                loginCommand.getUsername(), decryptPassword));

就有疑问,理论上应该查询数据库进行判断的,它是怎么进行的这个流程

AuthenticationManager

是 Spring Security 中的核心接口,负责处理认证请求。它的默认实现是 ProviderManager,内部会遍历一组 AuthenticationProvider 来完成认证。

认证逻辑的实际位置

是在我的UserDetailsServiceImpl类 ,继承了这个Spring Securtiy包下面的 UserDetailsService

复制代码
public interface UserDetailsService {
    UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
}

我自己定义的UserDetailsServiceImpl类

复制代码
public class UserDetailsServiceImpl implements UserDetailsService

要实现接口方法 loadUserByUsername

复制代码
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
}

1.authenticationManager.authenticate() 最终会调用 UserDetailsServiceImpl.loadUserByUsername() 方法。
2.在 loadUserByUsername() 方法中,会从数据库中加载用户信息(包括用户名、密码等),并封装成 UserDetails 对象返回。
3.Spring Security 会自动比对用户输入的密码与数据库中存储的密码是否一致。

相关推荐
雨中飘荡的记忆43 分钟前
ElasticJob分布式调度从入门到实战
java·后端
考虑考虑9 小时前
JDK25模块导入声明
java·后端·java ee
_小马快跑_11 小时前
Java 的 8 大基本数据类型:为何是不可或缺的设计?
java
于眠牧北13 小时前
MySQL的锁类型,表锁,行锁,MVCC中所使用的临键锁
mysql
Re_zero13 小时前
线上日志被清空?这段仅10行的 IO 代码里竟然藏着3个毒瘤
java·后端
洋洋技术笔记13 小时前
Spring Boot条件注解详解
java·spring boot
程序员清风1 天前
程序员兼职必看:靠谱软件外包平台挑选指南与避坑清单!
java·后端·面试
皮皮林5511 天前
利用闲置 Mac 从零部署 OpenClaw 教程 !
java
华仔啊2 天前
挖到了 1 个 Java 小特性:var,用完就回不去了
java·后端
SimonKing2 天前
SpringBoot整合秘笈:让Mybatis用上Calcite,实现统一SQL查询
java·后端·程序员