我建立一個「更改密碼」的形式爲我的用戶使用這些領域建立正確的:測試此密碼是當前登錄的用戶
- 舊密碼
- 新密碼
- 確認密碼
我需要一種方法來檢查當前登錄的用戶密碼是否與「舊密碼」字段相同,有沒有可能做到這一點,用authlogic?我找不到測試密碼的方法。
我建立一個「更改密碼」的形式爲我的用戶使用這些領域建立正確的:測試此密碼是當前登錄的用戶
我需要一種方法來檢查當前登錄的用戶密碼是否與「舊密碼」字段相同,有沒有可能做到這一點,用authlogic?我找不到測試密碼的方法。
Authlogic有一個valid_password?方法。見:http://rubydoc.info/github/binarylogic/authlogic/master/Authlogic/ActsAsAuthentic/Password/Methods/InstanceMethods#valid_password%3F-instance_method
所以,你可以
if @user.valid_password?(params[:old_password])
@user.password = params[:new_password]
@user.password_confirmation = params[:new_password_confirmation]
end
(或類似)
+1,我正要給同樣的答案。您可能想要更新答案,將第二個參數設置爲true,以檢查數據庫而不是手中的對象,即'@ user.valid_password?(params [:password],true)' –
非常感謝,那就是我在尋找! –
@KandadaBoggu:我現在有一個問題,當我更改密碼時,UserSession.find返回nil,即使在UserSession.new({...})。save,任何解決方案之後? –
我不知道什麼authlogic。但是,你永遠不應該存儲密碼,只能醃製SHA-1(或更好)哈希值,正確嗎?所以你應該使用相同的呼叫來測試密碼是否正確。 –
我知道,這就是爲什麼我這樣問:密碼通過authlogic以某種方式散列(我不知道),我想檢查我的密碼對散列的一個 –