自分向けのメモ
Gemfileのbcryptを有効にする。
gem 'bcrypt', '~> 3.1.7' # rails4.0.0のGemfileの場合
modelにpassword_digest属性を追加する
モデルを新規作成の場合
rails g scaffold account email:string password_digest:string
modelにhas_scure_passwordを指定する
参考:Rails API Doc:has_secure_password
has_secure_passwordによって、以下が行われる。
- モデルにpassword,password_confirmation属性の追加
- password,password_confirmationのvalidationの追加
- authoricateメソッドの追加
#account.rb
class Account < ActiveRecord::Base
has_secure_password
end
controllerのstrong parameterの編集
password, password_confirmationを追加。password_digestを削除。
def account_params
params.require(:account).permit(:name, :display_name, :password, :password_confirmation, :email)
end
view formの編集
password_digestのフィールドを削除して、passwordとpassword_confirmationに置き換える。
# 変更前
= f.label :password_digest
= f.text_field :password_digest
# 変更後
= f.label :password
= f.password_field: password
= f.label :password_confirmation
= f.password_field: password_confirmation
コントローラでの検証方法
def create
account = Account.find_by(name: user_params[:name])
if account and account.authenticate(account_params[:password])
# login.
else
#error.
end
end