Ruby on rails 安全密码轨道是否已将密码摘要更改为密码

Ruby on rails 安全密码轨道是否已将密码摘要更改为密码,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,您好,我正在使用我的Rails应用程序访问一个现有项目,该项目的数据库无法更改。因此,我的问题是如何使用Bcrypt创建会话,而不需要在我的数据库中包含password\u digest列?我已经在数据库中存储了password列中的密码 这是我的密码 def create user = User.find_by(email: params[:session][:email].downcase) # user.update_attribute(:last_login, Dat

您好,我正在使用我的Rails应用程序访问一个现有项目,该项目的数据库无法更改。因此,我的问题是如何使用
Bcrypt
创建会话,而不需要在我的数据库中包含
password\u digest
列?我已经在数据库中存储了
password
列中的密码

这是我的密码

def create
     user = User.find_by(email: params[:session][:email].downcase)
     # user.update_attribute(:last_login, DateTime.now)
    if user && user.authenticate(params[:session][:password])
      log_in user

      flash[:success] = "Bienvenido de nuevo #{current_user.name.upcase}"
      redirect_to user
    else
      flash[:danger] = 'Email invalido/Contrasena incorrecta' # Not quite right!
      render 'new'
    end

  end

看看这个又快又脏的样品。它将允许您使用另一列作为密码摘要

如果需要,您仍然需要将现有列更新为正确的哈希值和/或重写适当的方法以使用其他算法

has_secure_密码非常简单,因此您可以将其用作模板,根据自己的情况进行身份验证

require 'active_record'
require 'active_model'

login = 'jdoe'
password = '12345678'
wrong_password = 'abcdefgh'

ActiveRecord::Base.establish_connection(
  adapter:  'sqlite3',
  database: 'test.db'
)

unless ActiveRecord::Base.connection.table_exists?(:users)
  ActiveRecord::Base.connection.create_table :users do |t|
    t.string :username
    t.string :some_other_digest_column_name
  end
end

class User < ActiveRecord::Base
  has_secure_password
  alias_attribute :password_digest, :some_other_digest_column_name
end

unless User.where(username: login).any?
  User.create(username: login, password: password)
end

user = User.where(username: login).first

puts 'Using correct password:'

if user.authenticate(password)
  puts 'User successfully authenticated!'
else
  puts 'User not authenticated.'
end

puts
puts 'Using wrong password:'

if user.authenticate(wrong_password)
  puts 'User successfully authenticated!'
else
  puts 'User not authenticated.'
end
需要“活动记录”
需要“活动_模型”
login='jdoe'
密码='12345678'
错误的密码='abcdefgh'
ActiveRecord::Base.build\u连接(
适配器:“sqlite3”,
数据库:“test.db”
)
除非ActiveRecord::Base.connection.table_存在(:users)
ActiveRecord::Base.connection.create_表:用户不需要|
t、 字符串:用户名
t、 字符串:一些\u其他\u摘要\u列\u名称
结束
结束
类用户