Chciałbym prostą metodę w moim kontrolerze aplikacji, która wymaga zalogowania wszystkich użytkowników przed kontynuowaniem jakiejkolwiek części witryny. Używam Devise do uwierzytelniania.Szyny: W kontroler aplikacji wymuszaj logowanie, przekierowuj wszystkie żądania z wyjątkiem logowania
Próbowałem:
class ApplicationController < ActionController::Base
...
unless user_signed_in?
redirect_to login_path
end
...
end
To skutecznie przekierowuje wszystkich, ale problemem jest to również zapobiega żądania POST niezbędne do utworzenia nowej sesji użytkownika.
Moje pytanie brzmi: w jaki sposób można zablokować wszystkie żądania oprócz widoku logowania i żądania wpisu dotyczącego zalogowania?
Oczywiście. Mam to już w wielu (ale nie wszystkich) kontrolerach ... Myślałem zbyt mocno o tym, jak tymczasowo zablokować całą witrynę i nie zastanawiając się wystarczająco, czy kontroler aplikacji jest zwykłym kontrolerem. Dzięki :) – Andrew
W większości przypadków po prostu wyrzucisz tę linię do ApplicationController, a następnie pominiesz wcześniejszy filtr dla działań, które chcesz wyświetlić na białej liście. – pcg79