首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Has_secure_password rails将password_digest更改为password

Has_secure_password rails将password_digest更改为password
EN

Stack Overflow用户
提问于 2016-09-08 04:40:06
回答 1查看 2.7K关注 0票数 5

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

以下是我的代码

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2016-09-08 06:19:30

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

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

has_secure_password代码非常简单,因此您可以将其用作模板来执行适合您的情况的身份验证。

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39378638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档