Deviseの画面以外で認証をかける方法

逆の言い方をするとDeviseの画面のみ認証を行わない方法です。
認証チェックを全部のページにやりたいけれど1つ1つのコントローラーに設定していくのは面倒すぎるので一発で全部やっちゃおーぜということです。
でもDeviseのログイン画面とか諸々まで影響するのでそれは避けたい。その方法がこちら。
ApplicationControllerに設定します。ただし、DeviseController系のコントローラーの場合は除外、というナイスな方法です。

class ApplicationController < ActionController::Base
  check_authorization :unless => :devise_controller?
  ...(略)
end

Devise以外のコントローラーで認証を行いたくない場合は、skip_authorization_checkを設定します。トップ画面は認証いらないから除外したいという場合は以下のようにします。

# coding: utf-8
class TopController < ApplicationController
  skip_authorization_check
  def index
  end
end

カテゴリー Ruby, Ruby on Rails | タグ | パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です