0

私の小さな Rails アプリケーションでは、bcrypt を使用してユーザーのパスワードを保存時にハッシュしています。ただし、新しいユーザー フォームをロードするときに、パスワードの「無効なハッシュ」にヒットしました。

def new
  @user = User.new
end

これは新しいパスワードを作成しないため、無効になります。これを解決するために、私は使用してみました

<%= form_for :user, url: users_path do |f| %>

これはユーザー オブジェクトを必要としないため、作成アクションで作成できます。nilただし、エラー処理には引き続き User オブジェクトが必要であり、エラーがスローされます

これを行うには「正しい」方法が必要だと思います。誰でも私を啓発できますか?

私のユーザーモデルは次のとおりです。

require 'bcrypt'

class User < ActiveRecord::Base
# For user of user.password_hash. Thanks, bcrypt!
include BCrypt

before_save { self.email = email.downcase }

# Validates uniqueness of email
validates_uniqueness_of :email

# Set relationship to lists
has_many :lists

def make_new_password
    new_password = Array.new(10).map { (65 + rand(58)).chr }.join
    self.password_hash = Password.create(new_password)
end

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

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

1 に答える 1

1

この本は、ユーザー認証を行う正​​しい方法を見つけるのに役立つと思います。(申し訳ありませんが、あなたが提供した情報で私ができる最善のことです)。

お役に立てれば :)

于 2013-09-07T20:23:45.320 に答える