Skip before filter with Active Admin

风格不统一 提交于 2020-01-29 10:38:04

问题


I am using devise and recently added active admin, which created a separate table of admin_users to keep admins.

All works fine with Active Admin when I try to log in and browse around. However, my application controller has this for general users:

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

Because of this, when inside the active admin interface, whenever I try to edit or delete anything, it asks me to log in. I learned that a skip_before_filter can be used inside the controller in which the before_filter needs to be excluded, however Active Admin doesn't have a controller file in the controllers folder or anywhere in my project I could look.

can anyone suggest how to make active admin ignore the application beofre_filter which I want to apply on all of the client/user facing?


回答1:


In config/initializers/active_admin.rb you can add the following:

config.skip_before_action :authenticate_user!

You can also use the DSL provided to modify the ActiveAdmin controller: http://activeadmin.info/docs/8-custom-actions.html#modify_the_controller

Note: For Rails versions before 5.0 you will want to use skip_before_filter.




回答2:


I couldn't get @coreyward's solution to work, but editing config/application.rb as per this Devise post and adding:

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

    # Other code
end

to admin/dashboard.rb did the trick. It didn't work by just editing config/application.rb alone. Make sure to restart your server!




回答3:


both of the corey and Sooie are right... but only partially, to stop your blanket authorize_user! filter from affecting active_admin you need to implement both of their answers...

config/initializers/active_admin.rb

config.skip_before_filter :authorize_user!

app/admin/dashboard.rb

controller do
  skip_before_filter :authorize_user!
end



回答4:


I couldn't make the solutions of @fringd and @coreyward to work on Rails4 (using ActiveAdmin master branch).

So, I've moved the filter methods (I have two filters: authorize_user! and check_user_status) to a new Concern, and included this created module into the Controllers which had those filters (except for the ApplicationController, which should remain clean).

Then restarted the server, and problem solved.



来源:https://stackoverflow.com/questions/7591310/skip-before-filter-with-active-admin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!