【问题标题】:Grails 3 - springSecurity reauthenticate with passwordGrails 3 - springSecurity 使用密码重新验证
【发布时间】: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

【问题讨论】:

    标签: authentication grails spring-security grails3


    【解决方案1】:

    reauthenticate 方法使用您提供给reauthenticate 方法的电子邮件中找到的 UserDetails 实例更新当前安全上下文。它不执行任何验证,因为它是内部调用。它还会从用户缓存中删除用户,以在下次登录时强制刷新。

    因此,如果您不传递密码参数,它将使用来自 UserDetails 实例的密码并使用这些详细信息设置身份验证上下文。

    看看代码here

    我希望这会有所帮助。

    【讨论】:

    • 是的,有道理,谢谢!显然我误解了password 参数的用途。对于有兴趣的人,我使用org.springframework.security.crypto.password.PasswordEncoder.matches()单独验证密码。
    猜你喜欢
    • 2013-07-11
    • 2017-06-21
    • 2011-08-29
    • 1970-01-01
    • 2018-12-25
    • 2018-06-15
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    相关资源
    最近更新 更多