0

データベース内のすべてのアカウントの詳細を手動で更新する必要がある機能に取り組んでいます。正常に動作していますが、唯一の問題は、ログイン機能にdevise gemも使用しているためです。手動で更新するパスワードの暗号化された形式を保存する必要があります。したがって、devise gem がパスワードを暗号化する方法を知りたいだけです。

私のパスワードが「password」の場合。これを手動で暗号化し、デバイスと同じ方法でデータベースに保存する必要があります。

できるだけ早く元に戻してください。

4

1 に答える 1

3

Devise経由で認証するアプリで使用するために、データベースに一括割り当てしたいユーザー名/パスワードのリストがあると仮定しています。

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 に答える