带有Active Admin和Devise的401重定向循环

pur*_*nic 2 redirect-loop devise activeadmin ruby-on-rails-3.2

我有一个带有Devise(2.2.3)和Active Admin(0.5.1)的应用程序,我先安装了Devise,然后又安装了Active Admin。整个应用程序都需要位于登录名后面,因此在我的应用程序控制器中,我具有以下内容:

before_filter :authenticate_user!
Run Code Online (Sandbox Code Playgroud)

但是,由于将Active Admin安装到根名称空间(config.default_namespace = false,在initializers / active_admin.rb中),所以我的应用程序现在不允许任何人登录。它创建到/ users / login路径的重定向循环。

我试图通过在我的config / application.rb文件中添加skip_before_filter来缓解这种情况,但这没有用

config.to_prepare do
  Devise::SessionsController.skip_before_filter :authenticate_user!
  UsersController.skip_before_filter :authenticate_user!
end
Run Code Online (Sandbox Code Playgroud)

并且我还将以下内容添加到app / admin / user.rb

controller do
  skip_before_filter :authenticate_user!
end
Run Code Online (Sandbox Code Playgroud)

这也什么也没做。最后,我尝试在application_controller.rb中明确排除两个控制器,但这也无济于事。

before_filter :authenticate_user!, except: {controller: [:users, 'devise/sessions']}
Run Code Online (Sandbox Code Playgroud)

如何解决这个相当烦人的问题?

pur*_*nic 5

通过更改我的路线解决了该问题。ActiveAdmin路由需要遵循Devise路由,如下所示:

devise_for :users, ActiveAdmin::Devise.config
ActiveAdmin.routes(self)
Run Code Online (Sandbox Code Playgroud)

相信发生这种情况是因为我在安装和配置Devise之后安装了ActiveAdmin。