我试图做简单的用户身份验证,但在会话控制器中调用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