Gemfileに`gem bcrypt-ruby'を追加
migrationの実行

% rails generate migration \
add_password_digest_to_users password_digest:string
spec/models/user_spec.rbにテスト追加

Userオブジェクトにpassword_digestカラムがあることを確認するテスト。

require 'spec_helper'

describe User do

  before do
    @user = User.new(name: "Example User", email: "user@example.com")
  end

  subject { @user }

  it { should respond_to(:name) }
  it { should respond_to(:email) }
  it { should respond_to(:password_digest) }
  .
  .
  .
end
セキュアパスワードの実装
bundle exec rake test:prepare

test用のdbの用意
spec/models/user_spec.rb : testの作成

ダイジェストとの比較を行ってpassword認証を行えているかのテスト
testのエラーを回避した

エラー内容
users/index
[deprecated] I18n.enforce_available_locales will default to true in the future. If you really want to skip validation of your locale you can set I18n.enforce_available_locales = false to avoid this message.
  renders a list of users (FAILED - 1)
Gemfile に gem 'rb-readline'を追加
password_confirmationを追加
users_controllerに:password_confirmationを追加

    def user_params
      params.require(:user).permit(:user_name, :email_address, :password, :password_confirmation)
    end
password暗号化と各フィールドのvalidationの追加

1. username: 30文字以内、記号なし、半角英大文字小文字、数字有り、重複なし
2. email_address: 100文字以内、記号なし、emailのフォーマットを則っているかを見る
3. password: 6文字以上30文字以内、記号なし、半角英大文字小文字、数字有り
sessions controllerを作成

1. `$rails g controller sessions`
login buttonの設置
current_userを引っ張ってこれるmethodの追加

  def current_user
    @current_user ||= User.find(session[:user_id]) if session[:user_id]
  end

  helper_method :current_user
new,create,destroy methodの追加
未login時、login時、でボタンの表示を変えた

未login時→create account, login button
未login時→logout button
session ルートの追加
認証機構の追加
ログイン画面の作成
login状態に応じてボタンの表示を変えた

ログイン時→logoutボタン表示
ログアウト時→create accountかloginボタン表示