我試圖做簡單的用戶身份驗證,但在會話控制器中調用Digest::SHA1::hexdigest
正在生成與用戶模型中不同的哈希值。Digest :: SHA1 :: hexdigest爲相同的字符串生成不同的哈希值
user.rb:
class User < ActiveRecord::Base
before_save {|user| user.password = Digest::SHA1.hexdigest(user.password)}
...
end
sessions_controller.rb
def create
user = User.where(:username => params[:username], :password => Digest::SHA1.hexdigest(params[:password])).first
end
有沒有什麼辦法解決這一問題?
例如,當我嘗試登錄時,字符串「password」顯示爲「5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8」。
然而,在數據庫中,相同的字符串,「密碼」,顯示爲: 「353e8061f2befecb6818ba0c034c632fb0bcae1b」
你有一個真實的例子嗎?生成不同哈希的相同字符串? –
@ airplaneman19除非使用某種鹽來加密,否則極不可能。但在你的情況下,我猜你不是。我懷疑你的'參數[:密碼]'是相同的user.password我想有一些額外的字符,如'空間'等等,造成這種 – Viren
我剛剛添加了一個例子 – airplaneman19