0

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

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

请尽快回复以寻求帮助。

4

1 回答 1

3

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

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

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
于 2012-11-20T10:39:10.243 回答