私はレール4.2.xのアプリケーションを持っています。認証のための工夫をしています - 私はいくつかのコントローラを持っています。before_actionをすべてのコントローラとアクションで実行するにはどうすればよいですか?
私はdevise authenticate_userを望みます!メソッドは、ホームコントローラのインデックスアクション以外のすべてのコントローラおよびアクションで実行されます。
class ApplicationController < ActionController::Base
before_action :authenticate_user!
...
end
私はまた、特定のセットを制限することができます:私は、すべてのコントローラのアクションがapplication_controller.rbでbefore_actionを実行していることを確認することができます
(!もちろん、authenticate_user自体は、ログインのようなアクションが通過工夫面倒を見ます) すべてコントローラ上のアクション:
class ApplicationController < ActionController::Base
before_action :authenticate_user!, except: [:index]
...
end
しかし、私はちょうど家/インデックスは例外であることを作る方法を表示されません。
もちろん、コントローラごとに手動でbefore_action :authenticate_user!
を追加して、インデックスアクションのホームコントローラに例外を追加することもできます。しかし、これはあまり乾いていません。新しいコントローラーを追加する場合は、このbefore_actionをそれぞれに追加することを忘れないでください。
あなたはbefore_actionをApplicationControllerに宣言していますか? –
nevermind。問題は、それが自己である認証コントローラのアクションの前にスキップしなかったことです。そのため、何があっても常に実行されます。 –