【问题标题】:Re=authenticate user with sorcery gemRe=使用魔法宝石验证用户
【发布时间】:2013-11-27 18:14:16
【问题描述】:

我正在使用魔法 gem 并尝试重新验证用户以在“我的帐户”部分更改他们的密码。所以基本上表格上有 old_password、password 和 password_confirmation。所以基本上,用户已经登录,但我想进行额外的身份验证检查以重置用户的密码以获得额外的安全级别。

我的问题是:我如何通过 Sorcery 实现这一目标?我正在浏览他们的源代码,并遇到了我认为是用户对象的 'authenticate' 方法,但我该如何称呼它(注意,我对 rails 比较陌生,仍然接受 ruby​​ 语法)

这就是我所拥有的:

if (@password_reset.valid? && current_user.authenticate(@password_reset.email, @password_reset.old_password))

以及用户模型的相关部分

class User < ActiveRecord::Base
  authenticates_with_sorcery!
...

【问题讨论】:

    标签: ruby-on-rails-4 sorcery


    【解决方案1】:

    天哪,我很惊讶没有人回答这个问题,它最终变得非常简单。事实证明,我所要做的就是调用类方法而不是使用实例,如下所示。

    User.authenticate(@password_reset.email, @password_reset.old_password, false)
    

    【讨论】:

    • 这行得通,但是最后一个参数是做什么的,即 false?
    • 我已经有一段时间没有看到这个了。老实说我不记得了。我试图回去弄清楚,但找不到这个项目的来源。
    • 我再次查看了源代码,我认为是在这个链接:github.com/Sorcery/sorcery/blob/master/lib/sorcery/model.rb。我不明白为什么第三个参数在那里,也许它是从早期的 Sorcery 版本中遗留下来的。我怀疑这与记住我的功能有关。我猜你现在可以去掉第三个参数了吗?
    • 取出false好像没什么区别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多