【问题标题】:Ruby on Rails admin password [closed]Ruby on Rails 管理员密码 [关闭]
【发布时间】:2014-09-10 08:33:45
【问题描述】:

我正在尝试更改本地服务器的管理员密码。

我在终端上使用了以下步骤:

User.find_by(email:'admin@blah.com')
u=_
u.password='newpassword'
u.save

然后我通过输入 u.password 检查它是否真的被改变了, 它显示为零。

我在这里遗漏了什么吗? 谢谢你。

【问题讨论】:

  • 大家都忙着回答,没人问u=_是什么?
  • @MichalSzyndel 大概 OP 正在 irb 中运行它(我猜这就是“在终端上”的意思)。 irb 中的变量_ 指的是最后一个表达式的结果。等同于u=User.find_by(email:'admin@blah.com')

标签: ruby-on-rails ruby passwords admin


【解决方案1】:

您很可能在模型中使用has_secure_password。它对您的密码进行编码,因此无法通过控制台读取。这不是担心的理由,而是预期的安全功能。尝试使用新密码登录,一切正常。

【讨论】:

    【解决方案2】:

    大多数情况下,您需要提供passwordpassword_confirmation 来更改实际密码。因此试试这个:

    user = User.find_by(email:'admin@blah.com')
    user.password              = 'newpassword'
    user.password_confirmation = 'newpassword'
    user.save
    

    如果这也不起作用,那么您可能需要阅读错误消息。也许您的反对无效:

    user.valid?
    puts user.errors
    # => prints list of errors
    

    阅读有关 SecurePassword 的更多信息:http://api.rubyonrails.org/classes/ActiveModel/SecurePassword/ClassMethods.html

    【讨论】:

      【解决方案3】:

      您可以通过u.save! 来检查记录是否真正被保存或是否抛出任何异常(错误)。

      【讨论】:

        猜你喜欢
        • 2013-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-26
        • 2015-09-29
        • 2011-07-04
        • 2016-05-19
        相关资源
        最近更新 更多