簡體   English   中英

設計:密碼和:encrypted_pa​​ssword

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM