我正在使用设计并且最近添加了活动管理员,它创建了一个单独的admin_users表来保留管理员。
当我尝试登录并浏览时,一切正常。但是,我的应用程序控制器为普通用户提供了这个功能:
before_filter :authenticate_user!, :except => [:show, :index]
因此,当在活动管理界面内时,每当我尝试编辑或删除任何内容时,它都会要求我登录。我了解到skip_before_filter可以在需要排除before_filter的控制器内部使用,但是,Active Admin在控制器文件夹中没有控制器文件,或者我可以查看项目中的任何位置。
任何人都可以建议如何让主动管理员忽略我想要应用于所有面向客户/用户的应用程序beofre_filter吗?
答案 0 :(得分:37)
在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
。
答案 1 :(得分:3)
我无法让@ coreyward的解决方案工作,但根据this Devise post修改config/application.rb
并添加:
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
无效。确保重新启动服务器!
答案 2 :(得分:1)
核心和Sooie都是正确的...但只是部分,以阻止你的毯子authorize_user!过滤影响active_admin你需要实现他们的答案......
配置/初始化/ active_admin.rb
config.skip_before_filter :authorize_user!
应用程序/管理/ dashboard.rb
controller do
skip_before_filter :authorize_user!
end
答案 3 :(得分:1)
我无法使@fringd和@coreyward的解决方案适用于Rails4(使用ActiveAdmin主分支)。
所以,我已经将过滤方法(我有两个过滤器:authorize_user!
和check_user_status
)移动到一个新的关注点,并将此创建的模块包含到具有这些过滤器的控制器中( ApplicationController
除外,它应保持清洁。
然后重新启动服务器,问题解决了。