Grails 3 - springSecurity 使用密码重新验证
Posted
技术标签:
【中文标题】Grails 3 - springSecurity 使用密码重新验证【英文标题】:Grails 3 - springSecurity reauthenticate with password 【发布时间】:2017-05-31 13:00:00 【问题描述】:我刚刚注意到使用
springSecurityService.reauthenticate(userid, password)
无论password
的值如何(即正确密码、错误密码、空密码等),手动用户身份验证(在控制器中)都会成功。
我错过了什么吗?
springSecurityService的方法声明为void reauthenticate(String username, String password = null)
所以起初我很确定密码检查已经到位。
配置
Grails 3.2.4 Spring 安全插件(核心)3.1.1【问题讨论】:
【参考方案1】:reauthenticate
方法使用您提供给reauthenticate
方法的电子邮件中找到的 UserDetails 实例更新当前安全上下文。它不执行任何验证,因为它是内部调用。它还会从用户缓存中删除用户,以在下次登录时强制刷新。
因此,如果您不传递密码参数,它将使用来自 UserDetails 实例的密码并使用这些详细信息设置身份验证上下文。
看看代码here
我希望这会有所帮助。
【讨论】:
是的,有道理,谢谢!显然我误解了password
参数的用途。对于有兴趣的人,我使用org.springframework.security.crypto.password.PasswordEncoder.matches()
单独验证密码。以上是关于Grails 3 - springSecurity 使用密码重新验证的主要内容,如果未能解决你的问题,请参考以下文章
grails 2.2.2中的springSecurity.denied.message
Grails 3 和 Spring Security:当用户未登录时返回 401
Grails:弹簧安全插件 - 错误 springsecurity.GormPersistentTokenRepository