Rails:设计gem密码加密

时间:2012-11-20 10:15:33

标签: ruby-on-rails encryption devise

我正在开发一项功能,我必须手动更新数据库中的所有帐户详细信息。它工作正常,但唯一的问题是,因为我们还使用了设计gem来登录功能。我必须存储我手动更新的密码的加密格式。所以我只想知道devise gem如何加密密码。

如果我的密码是“密码”。我必须手动加密它并以与设计相同的方式将其存储在数据库中。

请尽快恢复帮助。

1 个答案:

答案 0 :(得分:3)

我假设您有一个用户名/密码列表,您希望将其大量分配到数据库中,以便在通过Devise进行身份验证的应用程序中使用。

默认设计使用BCrypt,(有一个宝石)

require 'bcrypt'

class User < ActiveRecord::Base
  # users.password_hash in the database is a :string
  include BCrypt

def password
  @password ||= Password.new(password_hash)
end

def password=(new_password)
  @password = Password.create(new_password)
  self.password_hash = @password
end

end

例如,您可以在列表中创建用户的实例,并在Rake任务中保存到数据库。

@user = User.new
@user.username = "foobar"
@user.password = "password"
@user.save