【回答】認証機能について(ユーザ新規登録)
問題
Railsにおけるユーザ新規登録の仕組みを説明して下さい。
前提条件
- deviseを使用せずにユーザ登録する
- ユーザ登録時に暗号化されたパスワードをDBに保存する
回答例
ユーザを登録するためのモデルを準備する。
カラムは以下を設定。
- 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」のような文字列に変換できます。
参考
Railsにおけるパスワードの扱い方(BCrypt) - Qiita
第6章 ユーザーのモデルを作成する - Railsチュートリアル