Rails 4.2.xアプリ、認証のための工夫があります-私はいくつかのコントローラーを持っています。
考案したauthenticate_userが欲しい!ホームコントローラインデックスアクションを除くすべてのコントローラとアクションで実行されるメソッド。 (もちろん、authenticate_user!自体が、ログインなどの工夫アクションを実行するように注意します)
すべてのコントローラーアクションがapplication_controller.rbのbefore_actionを実行することを確認できます。
class ApplicationController < ActionController::Base
before_action :authenticate_user!
...
end
allコントローラーで特定のアクションセットを制限することもできます。
class ApplicationController < ActionController::Base
before_action :authenticate_user!, except: [:index]
...
end
しかし、ホーム/インデックスだけを例外にする方法はわかりません。
もちろん、手動でbefore_action :authenticate_user!
をすべてのコントローラーに追加し、インデックスアクションのホームコントローラーに例外を追加します。しかし、これはあまりドライではありません。新しいコントローラーを追加する場合は、それぞれにbefore_actionを忘れずに追加する必要があります。
あなたがしなければならないことはautheticate_userを設定することです!そのようなすべてのコントローラーで:
class ApplicationController < ActionController::Base
before_action :authenticate_user!
...
end
そして、あなたのHomeControllerでそれを行います:
class HomeController < ApplicationController
skip_before_action :authenticate_user!, only: [:index]
...
end
これがあなたを助けることを願っています!