为什么即使输入正确的密码,它也说错了。当我比较2个密码时,它说它们是相同的但是当我尝试登录时,它说我的密码错了? BTW密码来自我在文件中的哈希。
post "/login" do
username = "#{params[:username]}"
#password = Digest::SHA256.hexdigest(Digest::SHA256.hexdigest("#{params[:password]}"))
password ="#{params[:password]}"
puts(password)
$users=eval(IO.read("users.emy"))
puts($users.values_at(username))
puts($users.to_s)
if $users.values_at(username)!=password
puts "Wrong password!"
redirect "/"
end
if $users.values_at(username)==password
redirect "/dash"
end
end
答案 0 :(得分:1)
由于您要比较字符串,因此您应该使用类似
的内容unless $users[username].eql? password
puts "Wrong password!"
redirect "/"
end
if $users[username].eql? password
redirect "/dash"
end
#values_at
返回一个数组。见:#values_at。由于params[:password]
应该是一个字符串,我相信这就是你想要的。
我在这里做了很多假设,因为我不知道users.emy
的格式。如果我在某处做出了错误的假设,请告诉我。
旁注,
username = "#{params[:username]}"
password = "#{params[:password]}"
可以写成
username = params[:username]
password = params[:password]
或仅用作params[:username]
或params[:password]
。