我只是偶然发现
springSecurityService.reauthenticate(userid, password)
无论
password
的值如何(例如正确的密码,错误的密码,空密码等),用于手动用户认证(在 Controller 中)的操作都会成功。我想念什么吗?
springSecurityService方法的声明是
void reauthenticate(String username, String password = null)
所以起初我非常有信心密码检查已经到位。设定档
最佳答案
reauthenticate
方法使用您提供给reauthenticate
方法的电子邮件中找到的UserDetails实例更新当前的安全上下文。它是内部调用,因此不执行任何验证。它还会将用户从用户缓存中删除,以在下次登录时强制刷新。
因此,如果不传递password参数,它将使用UserDetails实例中的密码,并使用这些详细信息设置身份验证上下文。
看看代码here
我希望这有帮助。
关于authentication - Grails 3-使用密码的Spring Security身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41680626/