Posted at

Railsでgemを利用して、パスワードを暗号化する

More than 1 year has passed since last update.

gemという外部ライブラリを利用して、ユーザーのパスワードを暗号化する方法を習ったので、まとめておきたいと思います。


bcryptのインストール

1.Gemfileに追記

gem 'bcrypt'

2.ターミナルでインストールコマンドを実行

bundle install


モデルにhas_secure_passwordを追加

has_secure_password


password_digestカラムを追加

1.change_users_columnsというマイグレーションファイルを作成

rails g migration change_users_columns

2.password_digestカラムの追加をマイグレーションファイルに記述

add_column :users, :password_digest, :string

3.passwordカラムの削除をマイグレーションファイルに記述

remove_column :users, :password, :string

4.変更の反映を実行

rails db:migrate


暗号化されたログイン処理を可能にする

def login

@user = User.find_by(email: params[:email])
if @user && @user.authenticate(params[:password])
.
.
.
end

#authenticateメソッドは渡された引数を暗号化し、password_digestの値と一致するかどうかを判定してくれる。