JQ Blog

Railsにおけるセッション管理

セッションとは

セッションを設定

class LoginsController < ApplicationController
  # ログインする
  def create
    if user = User.authenticate(params[:username], params[:password])
      # ユーザーIDをセッションに保存する
      session[:user_id] = user.id
      redirect_to root_url
    end
  end
end

セッションを取得

class ApplicationController < ActionController::Base
 
  private
    # 現在のユーザーを取得する
    # @_current_userが空の場合は、session情報をキーにしてDBから検索する
    def current_user
      @_current_user ||= User.find_by(id: session[:user_id])
    end
end

セッションを削除する

class LoginsController < ApplicationController
  # ログアウトする
  def destroy
    # @_current_userの値をnilにする
    @_current_user = nil
    reset_session
    redirect_to root_url
  end
end

Railsのセッション管理方法

CookieStore

ActiveRecordSessionStore

DalliStore