[英]devise :password and :encrypted_password
在設計 rails gem時,這兩者有什么區別?
我在生成的架構中看到了:encrypted_password
字段,但沒有:password
字段。
如果這兩者相互聯系,會有任何解釋嗎?
Devise::Models::DatabaseAuthenticatable
有一個setter:
def password=(new_password)
@password = new_password
self.encrypted_password = password_digest(@password) if @password.present?
end
所以你應該設置密碼就好像有一個password
字段,設計將負責加密它。
正如@spickermann已經指出的那樣 - 純文本密碼永遠不應該存儲在任何地方,並且應該從日志/錯誤消息等過濾掉,因為這會產生巨大的安全風險:加密的密碼泄漏並非完全無害,但並不危險。
password
是用戶設置為密碼的純文本(明文密碼不應存儲在任何地方)。 encrypted_password
這個密碼的加密版本。
您可能想要閱讀SecurePassword 。
:password
是用戶通過表單設置的密碼。
:encrypted_password
是存儲在數據庫中並檢索以創建用戶會話的內容。
基本上, :encrypted_password
是一個哈希和鹽漬版本的:password
,可以安全地存儲在您的數據庫中。 如果您需要有關不應將純文本密碼存儲在數據庫中的原因的詳細信息,請參閱此答案 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.