Ruby on rails 验证ruby on rails的哈希用户名和密码

Ruby on rails 验证ruby on rails的哈希用户名和密码,ruby-on-rails,authentication,Ruby On Rails,Authentication,我如何实现一个哈希函数(SHA512)来加密用户名,并在SQL server中检查用户名和密码是否正确 如果您设置了明文用户名,则立即登录 user = User.find_by(username: params[:session][:username].downcase) if user && user.authenticate(params[:session][:password]) log_in user redirect_to :root else flash

我如何实现一个哈希函数(SHA512)来加密用户名,并在SQL server中检查用户名和密码是否正确

如果您设置了明文用户名,则立即登录

user = User.find_by(username: params[:session][:username].downcase)
if user && user.authenticate(params[:session][:password])
  log_in user
  redirect_to :root
else
  flash.now[:warning] = 'Wrong username/password'
  render 'new'
end
在运行if语句之前,我尝试对用户名进行加密,但我可以让它工作。 我散列用户名的方式是:

username = params[:session][:username].downcase
username_encrypted = Digest::SHA2.new(512).hexdigest(username)
你知道怎么做吗


我想用这个来实现的是。在SQL中也有一列使用加密用户名,另一列使用“public”用户名。公共用户名对站点上的每个人都可见,加密用户名存储在SQL中仅用于身份验证。

您查看过Desive gem吗?为什么要散列用户名?是的,而且加密用户名的函数在Desive中也不存在。如果我错了,请纠正我@Sergio Tulentsev我有一个用于登录用户名的表,另一个表中用户有另一个公共(对其他用户可见)用户名。我的意思是,你需要它做什么?你想用这个做什么?我想用这个做什么。在SQL中也有一列使用加密用户名,另一列使用“public”用户名。其中公共用户名对站点上的每个人都可见,加密用户名存储在SQL中仅用于身份验证。