サーバーへのすべてのリクエストでユーザーがログインしているかどうかを確認したいと思います。
何かのようなもの:
:before_filter verify_logged_in
すべてのコントローラー アクションとすべてのリクエストに適用されるように、その before_filter をどこに置く必要がありますか?
サーバーへのすべてのリクエストでユーザーがログインしているかどうかを確認したいと思います。
何かのようなもの:
:before_filter verify_logged_in
すべてのコントローラー アクションとすべてのリクエストに適用されるように、その before_filter をどこに置く必要がありますか?
フィルターがすべてのアクションに適用されるようにするには、それを application_controller.rb に配置します。
Application Controller は、他のすべてのクラスの基本クラスです。
このクラスにフィルターを配置すると、フローは次のように機能します。
url say of users
resource を任意のアクション say index
action でヒットすると、次のようになります。
コントロールは最初に に移動しApplication Controller
ます。そこでフィルターをチェックし、見つかった場合はフィルターメソッドを実行し、その後ユーザーコントローラーのインデックスアクションに進みます。
アプリケーション コントローラ:
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :verify_logged_in
end
他のコントローラー:
class UsersController < ApplicationController
def index
end
上記のコードでは、他のコントローラーがアプリケーション コントローラーである親コントローラーの内容を継承していることがわかります。したがってbefore_filter
、アプリケーション コントローラーを配置すると、すべてのユーザーに対して、ユーザーが各要求に対してログインしているかどうかが確認されます。
基本クラス (application_controller.rb ファイル内) に before_filter を配置すると、基本クラスとそのすべての派生クラス (次のようなもの) で機能します。
class ApplicationController < ActionController::Base
before_filter :set_locale
def set_locale
I18n.locale = params[:locale] or I18n.default_locale
end
end
幸運を :-)
に配置し、ApplicationController
そこから他のすべてのコントローラーを継承します。verify_logged_in
サブコントローラーの 1 つを上書きしないと、単純に機能します。