bcryptのインストール
gemfileに記述
gemfile
gem 'bcrypt'
インストール
$ bundle installでインストール
has_secure_passwordメソッド
bcryptをインストールすると、has_secure_passwordを設定できるようになる。これを通すとDBに暗号化された状態で保存される。このメソッドの中にpasswordのバリデーションが入っているためpasswordのバリデーションは記述しなくていい。
カラムの変更
has_secure_passwordメソッドはpasswordカラムではなく、password_digestカラムに暗号化したpassを入れる。そのためpasswordカラムを作ってたらそれを削除し、password_digestカラムを追加しないといけない。
change
def change
add_column :users, :password_digest, :string
remove_column :users, :password, :string
end
add_column :データベース名,:カラム名,:型
この後、rails db:migrateで反映。
カラム変更による命名の変更はコードの方はしなくてよし
カラム名を変更したがコードの方でpasswordをpassword_digestに変更する必要はない。bcryptはpasswordをpassword_digestに変更する機能もあるのでそのままで良し。
認証にはauthenticateメソッドを
authenticateメソッドは暗号化されたpassと入力されたpassが一致しているのかをみてくれるbcryptに入っているメソッドです。
@user.authenticate("password")
で@userから取得したpassと引数のpassの照合をします。