我刚刚注意到使用
springSecurityService.reauthenticate(userid, password)
用于手动用户身份验证(在控制器中)成功,无论password
的值如何,即正确的密码,错误的密码,空密码等。
我错过了什么吗?
springSecurityService方法的声明是
void reauthenticate(String username, String password = null)
所以起初我非常确信密码检查已经到位。
配置
答案 0 :(得分:0)
reauthenticate
方法使用您提供给reauthenticate
方法的电子邮件找到的UserDetails实例更新当前的安全上下文。它不执行任何验证,因为它是内部调用。它还会将用户从用户缓存中删除,以在下次登录时强制刷新。
因此,如果您没有传递密码参数,它将使用UserDetails实例中的密码并使用这些详细信息设置身份验证上下文。
查看代码here
我希望这会有所帮助。