嗨即時通訊新的Bcrypt在軌道中,我想知道如何正確使用這個寶石,截至目前我能夠使密碼哈希,但是當它比較用戶輸入的密碼時不匹配。在軌道上加密紅寶石
這裏是我的加密和登錄代碼。
def self.login(user)
hashed_password = encrypt_password(user["password"])
result = User.where({:username => user["username"], :password => hashed_password})
return result
end
def self.add_user(user)
hashed_password = encrypt_password(user["password"])
result = User.create({:username => user["username"],
:password => hashed_password,
:firstname => user["firstname"],
:middle_initial => user["middle_initial"],
:lastname => user["lastname"],
:advisory_class => user["advisory_class"]})
return result
end
def self.encrypt_password(password)
password_salt = BCrypt::Engine.generate_salt
password_hash = BCrypt::Engine.hash_secret(password,password_salt)
end
在add_user中,我使用encrypt_password函數在使用登錄函數登錄時對其進行加密。密碼與數據庫中的密碼不匹配。我確定我沒有以正確的方式做這件事,你能否指出我在哪裏做錯了。謝謝。
作爲說明,可以在形式爲'x({...})'的調用中省略散列花括號,因爲它們在Ruby中是隱含的。例如:'User.create(:username => user ['username'],...)'或甚至更好'User.create(username:user ['username'],...)'使用現代哈希符號。 – tadman
謝謝你的提示,但那不是我現在主要關心的問題。 –