if (!passwordEncoder.matches(password, userDetails.getPassword())) {
throw new BadCredentialsException("密码不正确");
}
问题描述:
passwordEncoder.matches() 参数一个未加密和一个加密的变量。加密的变量是使用Springboot的BCryptPasswordEncoder加密得来。加密密码通过查询数据库获取。已经设置到UserDetail里面了。
这段代码,password变量的值是"password",userDetails.getPassword()返回值是空值。
解决途径:
需要解决userDetails.getPassword()返回空值的问题,密码其实已经在变量里面了
解决:getPassword方法没有重写,会一直返回null
@Override
public String getPassword() {
return null;
}
@Override
public String getPassword() {
return umsAdmin.getPassword();
}

博客内容涉及Springboot应用中密码验证失败的场景,由于UserDetails的getPassword方法未重写,导致返回null。修复方法是正确重写getPassword方法,确保返回正确的加密密码。这个问题的核心在于理解Springboot的安全机制和UserDetails接口的实现。
5014

被折叠的 条评论
为什么被折叠?



