2

我有一个带有 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 的重定向循环。

我尝试通过在我的 config/application.rb 文件中添加一个 skip_before_filter 来缓解这个问题,但这并没有奏效

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']}

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

4

1 回答 1

5

通过改变我的路线解决了这个问题。ActiveAdmin 路由需要在 Devise 路由之后,如下所示:

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

相信这是因为我在安装和配置 Devise 之后安装了 ActiveAdmin。

于 2013-04-15T19:35:31.690 回答