LoginSignup
4
4

More than 5 years have passed since last update.

railsでbcryptを使ってpasswordをsecureに扱う

Posted at

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の照合をします。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4