Цикл перенаправления 401 с Active Admin и Devise

У меня есть приложение с Devise (2.2.3) и Active Admin (0.5.1). Сначала я установил Devise, а затем Active Admin. Все приложение должно находиться за логином, поэтому в моем контроллере приложений у меня есть следующее:

before_filter :authenticate_user!

Однако после установки Active Admin в корневом пространстве имен (config.default_namespace = false, в initializers/active_admin.rb) мое приложение теперь не позволяет никому войти в систему. Он создает цикл перенаправления на путь /users/login.

Я пытался облегчить это, добавив skip_before_filter в мой файл config/application.rb, но это не сработало.

config.to_prepare do
  Devise::SessionsController.skip_before_filter :authenticate_user!
  UsersController.skip_before_filter :authenticate_user!
end

и я также добавил следующее в app/admin/user.rb

controller do
  skip_before_filter :authenticate_user!
end

что тоже ничего не сделал. Наконец, я попытался явно исключить два контроллера из моего application_controller.rb, но это тоже ничего не дало.

before_filter :authenticate_user!, except: {controller: [:users, 'devise/sessions']}

Как мне обойти эту довольно досадную проблему?


person purpletonic    schedule 10.04.2013    source источник


Ответы (1)


Решил проблему, изменив мои маршруты. Маршруты ActiveAdmin должны идти после маршрутов Devise, например:

devise_for :users, ActiveAdmin::Devise.config
ActiveAdmin.routes(self)

Поверьте, это произошло потому, что я установил ActiveAdmin после того, как установил и настроил Devise.

person purpletonic    schedule 15.04.2013