LoginSignup
1
1

More than 3 years have passed since last update.

簡単に言うと?

安全性の高いパスワード機能を簡単に実装できるメソッド。
間違ったパスワードを入力させないように、二回パスワードを入力させるフォーム画面を作成するときに使える。

何ができる?

has_secure_passwordを使うと以下の機能が使える様になる。

  • ハッシュ化したパスワードをデータベース内のpassword_digestという属性に保存できるようになる。
  • 2つのペアの仮想的な属性(passwordとpassword_confirmation)が使えるようになる。また、存在性と値が一致するかどうかのバリデーションも追加される 。
  • 認証のために使うauthenticateメソッドが使えるようになる。authenticateメソッドとは、引数で受けとった文字列がオブジェクト内のpassword_digestと一致するか調べるためのメソッド。一致した時はそのオブジェクト自身を返し、不一致だとfalseを返す。

どうやって使う?

  1. テーブルのカラムにpassword_digestを導入する
  2. Gemfileのbcryptをコメントアウトしてbundle install(Genfile内にコメントとして既に記述されているのでコメントアウトする)
  3. モデルにhas_secure_passwordを追加する
  4. passwordpassword_confirmationを使ってフォーム画面を作成する。
$ bin/rails g model user name:string password_digest:string
app/model/user.rb
class User < ApplicationRecord

  has_secure_password

end
gem 'bcrypt', '~> 3.1.7'

$ bundle install
app/views/users/form.html.slim
= form_with model: user, local: true do |f|
  .form-group
    = f.label name, '名前'
    = f.text_field :name, class: 'form-control'
  .form-group
    = f.label :password, 'パスワード'
    = f.password_field :password, class: 'form-control'
  .form-gorup
    = f.label :password_cocfirmation, 'パスワード(確認)'
    = f.password_field :password_cocfirmation, class: 'form-control'
  = f.submit '登録する', class: 'btn btn-primary'
引用

has_secure_passwordのvalidationsをカスタマイズする
Railsのhas_secure_passwordとは
BCryptのすすめ

1
1
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
1
1