迷い人

日々勉強。勉強の先に何か見つかるといいなぁ

【回答】認証機能について(ユーザ新規登録)

問題

Railsにおけるユーザ新規登録の仕組みを説明して下さい。

 

前提条件
  • deviseを使用せずにユーザ登録する
  • ユーザ登録時に暗号化されたパスワードをDBに保存する

 

 

回答例

ユーザを登録するためのモデルを準備する。

カラムは以下を設定。

  • email
  • password_digest

 

ユーザモデルに「has_secure_password」メソッドを指定する。

has_secure_passwordメソッドを指定することでできることは以下。

  • password_digestが使用できる
  • 仮想的な属性password、password_confirmationが使用できる

 

password_digestってなにするの?

暗号化されたパスワードを格納するカラムです。暗号化には例えばbcryptを使用します。

 

仮想的とはどういうこと?

テーブルにカラムとして定義していなくても、ビューでname指定して送信することができます。テーブルに登録するときはpassword_digestが使われます。

 

 

パスワードを暗号化するため(ハッシュ化するため)にbcrypt gemを導入します。

bcryptってなに?

パスワードハッシュ化関数です。

 

例えば「password」という文字列を「$2a$11$qr1TfRmKoQZpW7qlCjIs8.FCl6MB9X60Zq5YNg/bXjmaDUR4Qua06」のような文字列に変換できます。

 

 

 

f:id:oyaoya1123:20191223124851p:plain

 

参考

Railsにおけるパスワードの扱い方(BCrypt) - Qiita

bcrypt - Wikipedia

第6章 ユーザーのモデルを作成する - Railsチュートリアル