Rails: в Application Controller принудительно входите в систему, перенаправляйте все запросы, кроме входа в систему - PullRequest
5 голосов
/ 13 июля 2011

Я хотел бы, чтобы в моем контроллере приложений был простой метод, который требует, чтобы все пользователи выполнили вход, прежде чем переходить к какой-либо части сайта.Я использую Devise для аутентификации.

Я пытался:

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

Это успешно перенаправляет всех, но проблема в том, что он также предотвращает отправку запроса, необходимого для создания нового пользовательского сеанса.

Итак, мой вопрос: как бы вы заблокировали все запросы, кроме представления входа в систему и запроса отправки сообщения для входа?

1 Ответ

9 голосов
/ 13 июля 2011

Используя Devise, это легко. Вам просто нужно добавить before_filter :authenticate_user! к вашему ApplicationController.

Это все прописано в вики Devise - https://github.com/plataformatec/devise

Обратите внимание, что в Rails 4.2+ предпочтительным является before_action :authenticate_user!.

...