12

我正在使用设计并最近添加了活动管理员,它创建了一个单独的 admin_users 表来保留管理员。

当我尝试登录并四处浏览时,Active Admin 一切正常。但是,我的应用程序控制器为普通用户提供了这个:

before_filter :authenticate_user!, :except => [:show, :index]

因此,在活动管理界面中,每当我尝试编辑或删除任何内容时,它都会要求我登录。我了解到可以在需要排除 before_filter 的控制器内部使用 skip_before_filter,但是 Active Admin在控制器文件夹或我可以查看的项目中的任何地方都没有控制器文件。

任何人都可以建议如何让活动管理员忽略我想应用于所有面向客户端/用户的应用程序 beofre_filter 吗?

4

4 回答 4

41

您可以在config/initializers/active_admin.rb其中添加以下内容:

config.skip_before_action :authenticate_user!

您还可以使用提供的 DSL 来修改 ActiveAdmin 控制器:http ://activeadmin.info/docs/8-custom-actions.html#modify_the_controller

注意:对于 5.0 之前的 Rails 版本,您需要使用skip_before_filter.

于 2011-09-29T01:01:59.610 回答
4

我无法让@coreyward 的解决方案正常工作,但config/application.rb根据此 Devise 帖子进行编辑并添加:

ActiveAdmin.register_page "Dashboard" do
    controller do
      skip_before_action :name_of_filter_to_skip
    end

    # Other code
end

成功admin/dashboard.rb了。仅仅靠编辑是行不通的config/application.rb。确保重新启动服务器!

于 2012-10-03T20:22:14.150 回答
2

corey 和 Sooie 都是对的……但只是部分地阻止了你的毯子 authorize_user!过滤影响 active_admin 你需要实现他们的两个答案......

配置/初始化程序/active_admin.rb

config.skip_before_filter :authorize_user!

应用程序/管理员/dashboard.rb

controller do
  skip_before_filter :authorize_user!
end
于 2012-11-29T18:23:14.313 回答
1

我无法使@fringd 和@coreyward 的解决方案在Rails4 上工作(使用ActiveAdmin 主分支)。

所以,我已经将过滤器方法(我有两个过滤器:authorize_user!check_user_status)移动到一个新的关注点,并将这个创建的模块包含到具有这些过滤器的控制器中(除了ApplicationController应该保持干净的)。

然后重启服务器,问题解决。

于 2013-11-14T21:23:22.637 回答