5

アプリケーションコントローラで、すべてのユーザーがサイトにアクセスする前にログインする必要がある簡単な方法が必要です。私はDeviseを認証に使用しています。Rails:アプリケーションコントローラでログインを強制し、ログイン以外のすべてのリクエストをリダイレクト

私が試した:

class ApplicationController < ActionController::Base 
    ... 
    unless user_signed_in? 
    redirect_to login_path 
    end 
    ... 
end 

をこれが正常に皆をリダイレクトしますが、問題は、それはまた、新しいユーザーセッションを作成するために必要なPOSTリクエストを防ぎです。

私の質問は、ログインビューとログインの投稿要求以外のすべてのリクエストをブロックする方法ですか?

答えて

9

これは簡単です。あなたはApplicationControllerにbefore_filter :authenticate_user!を加えるだけです。

これは、すべての工夫ウィキに綴られている - Railsの4.2 +で、before_action :authenticate_user!が好ましいことhttps://github.com/plataformatec/devise

注意を。

+0

もちろんです。私はこれを多くのコントローラー(ただしすべてではない)に持っています...サイト全体を一時的にロックして、アプリケーションコントローラーが通常のコントローラーであるかどうかを十分に考えない方法については、あまりにも難しく考えていました。ありがとう:) – Andrew

+2

ほとんどの場合、その行をApplicationControllerにスローし、ホワイトリストにするアクションのbeforeフィルタをスキップします。 – pcg79

関連する問題