このガイドでは、Rails で Bcrypt を使用する方法を示しますが、 Bcrypt に関するこの Rails ドキュメントとは実装が大きく異なります。
ガイド版
パスワードを設定してください
def password=(password)
self.password_digest = BCrypt::Password.create(password)
end
パスワード認証
def is_password?(password)
BCrypt::Password.new(self.password_digest) == password
end
しかし、ドキュメントは組み込みメソッドを使用して同じことを行います。
ドキュメントのバージョン
パスワードを設定してください
と の両方の値を設定user.password
または設定してから呼び出すと、パスワード値を取得してダイジェストを生成し、データベースに保存する Bcrypt からいくつかのコールバックが呼び出されます。user.password
user.password_confirmation
user.save
user.password = 'mUc3m00RsqyRe'
user.password_confirmation = 'mUc3m00RsqyRe'
user.save
パスワード認証
このメソッドは、パスワード引数が一致するかどうかuser.authenticate(password)
に応じて、 false または のインスタンス変数を返します。user
user.password_digest
user.authenticate('notright')
user.authenticate('mUc3m00RsqyRe')
質問
最初に見たときからずっとドキュメント版を使用していましたが、このガイドはより適切な方法に従っていますか?
ガイドがホイールを書き直すのはなぜですか? それは非常にRailsyではないようです。
これは Bcrypt または Rails のバージョンの違いだけですか?