我一直在使用Devise進行用戶認證的一段時間的項目。無論何時創建用戶,它都會爲它們生成一個密碼salt以及它們的加密密碼。Rails 3/Devise:密碼鹽不再被創建?
正如我來到這個項目的尾部,我是測試用戶註冊,並注意到我的新角色並沒有在數據庫中創建這些新用戶密碼鹽,而我的老用戶都有鹽。新用戶可以正常登錄,但我擔心Devise爲什麼不再創建鹽。
當我升級模塊並記住日誌說刪除可加密因爲bcrypt現在是默認的加密,或類似的情況下,Devise遇到的唯一不尋常的事情。我這樣做......不知道這是否與當前問題有關。另外,也許是因爲我的項目已經陷入困境,我從頭創建了一個全新的Rails應用程序,並添加了Devise,甚至這個新項目也不會爲用戶創建鹽分。
是否有設計密碼鹽的新方法,或者沒有人知道鹽爲什麼不再被創建?不幸的是,Devise wiki在這方面沒有太多的話要說,Google迄今爲止一直沒有成果。
或者......甚至有必要首先有鹽嗎?似乎更安全的擁有它們,我想。
我的用戶/ devise配置如下。
配置/初始化/ devise.rb
Devise.setup do |config|
config.mailer_sender = "[email protected]"
require 'devise/orm/active_record'
config.authentication_keys = [ :login ]
config.stretches = 10
config.encryptor = :bcrypt
# Setup a pepper to generate the encrypted password.
config.pepper = "79c2bf3b[...]"
end
應用程序/模型/ user.rb
devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable
UPDATE
我能夠找到的通知從Devise升級後,讀取...
[DEVISE] From version 1.2, there is no need to set your encryptor to bcrypt since encryptors are only enabled if you include :encryptable in your models. To update your app, please:
1) Remove config.encryptor from your initializer;
2) Add t.encryptable to your old migrations;
3) [Optional] Remove password_salt in a new recent migration. Bcrypt does not require it anymore.
這樣看來,如果你堅持使用bcrypt,這也解釋了爲什麼它不能再創建password_salt已被棄用。所以這個答案,但我的問題的其他部分仍然存在......這是一個很好的做法,或者我應該與除了bcrypt之外的另一個加密?
關於此主題的一點更新:我正在研究有關此主題的更多信息,顯然BCrypt將salt加密爲密碼,而不是單獨的東西。這當然可以解釋爲什麼在Devise中鹽柱被拋棄了。 – Shannon 2011-05-13 15:10:00