rails has_secure_password。是否可以更改数据库中的用户密码

rails has_secure_password. is it possible to change user's password in DB

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

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

我找不到任何相关信息。

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

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

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)

希望对您有所帮助。