我有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']}
如何解决这个相当恼人的问题?
答案 0 :(得分:4)
通过更改我的路线来解决问题。 ActiveAdmin路由需要在Devise路由之后,如下所示:
devise_for :users, ActiveAdmin::Devise.config
ActiveAdmin.routes(self)
相信这是因为我安装并配置了Devise后安装了ActiveAdmin。