【发布时间】:2017-01-24 08:13:15
【问题描述】:
代码:
class LoginController < ApplicationController
def auth
if params[:name].present? && params[:pass].present? && params[:role].present?
@name=params[:name]
pass=params[:pass]
role=params[:role]
epass = BCrypt::Password.new(pass)
else
render "argerror"
end
end
end
错误:
BCrypt::Errors::InvalidHash (invalid hash):
app/controllers/login_controller.rb:12:in `new'
app/controllers/login_controller.rb:12:in `auth'
密码加密机制:
salt = BCrypt::Engine.generate_salt
pass = BCrypt::Engine.hash_secret(pass, salt)
以上代码产物“BCrypt::Errors::InvalidHash”错误。我的要求是从客户端获取用户名和密码并验证 它与存储在数据库中的数据。在数据库中,我存储了由 bcrypt 加密的用户的哈希密码。所以,现在我试着 加密客户端输入的密码。加密当前密码后,与存储在 db 中的哈希密码匹配。但它会产生错误。如何解决这个问题呢 ?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 model-view-controller bcrypt