【问题标题】:rails has_secure_password. is it possible to change user's password in DBrails has_secure_password。是否可以在数据库中更改用户密码
【发布时间】:2015-10-26 23:35:48
【问题描述】:

我有使用 has_secure_password 获得用户授权的 rails 项目。因此,密码存储在数据库中作为加密密码。

现在我想添加以下内容: 用户将能够将他当前的密码更改为新密码,并且这个新密码也必须在数据库中加密。

我找不到任何关于它的信息。

有没有办法用 has_secure_password 做到这一点?

【问题讨论】:

  • 如果您在验证时使用password(attribute) 字段,那么您可以在表单中提供相同的password 属性以进行更新。

标签: ruby-on-rails passwords


【解决方案1】:

您可以在控制台中这样做:

user = User.find(1)
user.password = 'test123'
user.password_confirmation = 'test123'
user.save

所以这将使用新密码更新用户。如果你想使用它update_attributes 那么:

user.update_attributes(password: 'test123', password_confirmation: 'test123')

这将更新用户密码,该密码将以加密形式出现。你不需要做任何事情,rails 会在更新时处理它。

或者,如果您使用的是 strong parameters 并且具有:

def user_params
  params.require(:user).permit(:password, :password_confirmation)
end

你在参数中有这个:

 Parameters: {"user"=>{"password"=>"test123", "password_confirmation"=>"test123"}}

那么您可以在更新操作中使用它:

user.update(user_params)

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2012-03-13
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    相关资源
    最近更新 更多