最近使う機会が増えてきたhas_secure_passwordについてまとめてみました。
class User < ApplicationRecord
.
.
.
has_secure_password
end
具体的なメリット
1.セキュアにハッシュ化したパスワードを、データベース内のpassword_digestという属性に保存できるようになる。
2.2つのペアの仮想的な属性 (passwordとpassword_confirmation) が使えるようになる。また、存在性と値が一致するかどうかのバリデーションも追加される。
3.authenticateメソッドが使えるようになる (引数の文字列がパスワードと一致するとUserオブジェクトを、間違っているとfalseを返すメソッド)。
has_secure_passwordを使うための条件
1.gemに'bcrypt'を追加する。
2.モデルにpassword_digest属性を追加する。
注意点
メリットの2つ目のバリデーションは新規登録の際のみに適用されるので、更新で空文字列であれば登録できてしまう。→追加でpresenceのバリデーションを自分で書く必要がありそうですね。