我正在尝试在我的Rails应用上使用has_secure_password
和bcrypt(3.1.11)。
这是我在Ubuntu上的设置:
password_digest:string
has_secure_password
添加到我的用户模型我没有收到任何错误,但是当我去创建用户时,它要求我提供password_digest
属性,而不是password
和password_confirmation
。
has_secure_password
是否应该自动将用户更改为需要password
和password_confirmation
而不是password_digest
?
答案 0 :(得分:0)
不,你不能存储password
和password_confirmation
,只存储password_digest
。您永远不希望在数据库中存储纯文本密码。
当您创建新用户时,您可以
User.create(password: 'something', password_confirmation: 'something', ..other fields..)
然后has_secure_password
负责更新数据库中的password_digest
。
在User
模型中加入一些验证也是一个很好的规则。
validates :password_confirmation, presence: true, on: :create
validates :password, confirmation: true
也不要忘记在控制器中列出白名单
def user_params
params.require(:user).permit(:password, :password_confirmation)
end
User.create(user_params)
答案 1 :(得分:-2)
您可能需要手动更改表单和/或create
模板以包含password_confirmation
字段。请仔细查看has_secure_password文档吗?