私は、ユーザーがサーバーへの1回のリクエストごとにログインしているかどうか確認したいと思います。それは、すべてのコントローラのアクションとすべての要求に適用されますので、私はbefore_filterを置くべきRails 3.2.11のすべてのコントローラのすべてのアクションにbefore_filterを適用するには?
:before_filter verify_logged_in
:よう
は何か?
私は、ユーザーがサーバーへの1回のリクエストごとにログインしているかどうか確認したいと思います。それは、すべてのコントローラのアクションとすべての要求に適用されますので、私はbefore_filterを置くべきRails 3.2.11のすべてのコントローラのすべてのアクションにbefore_filterを適用するには?
:before_filter verify_logged_in
:よう
は何か?
フィルタをすべてのアクションに適用するには、application_controller.rbに配置します。
ApplicationController
に配置し、他のすべてのコントローラを継承します。サブコントローラの1つにverify_logged_in
を上書きしないと、単純に機能します。
アプリケーションコントローラは、他のすべてのクラスの基本クラスです。
あなたがこのクラス内の任意のフィルタを入れた場合は次のように流れが動作します。
は、URLを打つ場合は任意のアクションを持つusers
リソースの言う、その後index
アクション言う:
制御が最初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ファイル内の)基底クラスで
そして、私のアプリケーション・コントローラーをそのアクションに使用しないomniauthのようなlibを使用するとどうしますか? – panzi
プットbefore_filter
:-)幸運を、それがベース上で動作すると、このような
として、そのすべての派生クラス、ヨーヨーは何をしたい場合そのフィルタを除いて追加するには?あなたはどのようにすべてのコントローラのすべてのアクションのフィルタを実行したいのですが、ユーザーのコントローラのインデックスアクションを言うのですか? @David Hahn – Cas
あなたは 'skip_before_filter:verify_logged_in、:except => [:index]'をユーザコントローラに追加します。 –