Пропустить до фильтра с помощью Active Admin
Я использую devise и недавно добавил активный администратор, который создал отдельную таблицу admin_users для поддержки админов.
Все работает нормально с Active Admin, когда я пытаюсь войти в систему и просматривать ее. Однако мой контроллер приложений имеет это для обычных пользователей:
before_filter :authenticate_user!, :except => [:show, :index]
Из-за этого, когда внутри активного интерфейса администратора, всякий раз, когда я пытаюсь редактировать или удалять что-либо, он просит меня войти. Я узнал, что skip_before_filter можно использовать внутри контроллера, в котором необходимо исключить before_filter, однако Active Admin не имеет файла контроллера в папке контроллеров или где-либо в моем проекте, который я мог бы посмотреть.
может ли кто-нибудь предложить, как заставить активного администратора игнорировать приложение beofre_filter, которое я хочу применить для всех клиентов/пользователей?
Ответы
Ответ 1
В config/initializers/active_admin.rb
вы можете добавить следующее:
config.skip_before_filter :authenticate_user!
Вы также можете использовать DSL для изменения контроллера ActiveAdmin: http://activeadmin.info/docs/8-custom-actions.html#modify_the_controller
Ответ 2
Я не смог получить решение @coreyward для работы, но отредактировал config/application.rb
в соответствии с этим сообщением об установке и добавил:
ActiveAdmin.register_page "Dashboard" do
controller do
skip_before_filter :name_of_filter_to_skip
end
# Other code
end
to admin/dashboard.rb
сделал трюк. Это не сработало, просто отредактировав config/application.rb
. Обязательно перезагрузите сервер!
Ответ 3
и ядро, и Sooie правы... но только частично, чтобы остановить ваше одеяло authorize_user! фильтр, влияющий на active_admin, вам нужно реализовать оба их ответа...
конфигурации/Инициализаторы/active_admin.rb
config.skip_before_filter :authorize_user!
приложение/администратор/dashboard.rb
controller do
skip_before_filter :authorize_user!
end
Ответ 4
Я не мог заставить решения @fringd и @coreyward работать с Rails4 (используя ветвь ActiveAdmin master).
Итак, я переместил методы фильтра (у меня есть два фильтра: authorize_user!
и check_user_status
) к новому Концерну и включил этот созданный модуль в Контроллеры, у которых были эти фильтры (, за исключением ApplicationController
, который должен оставаться чистым).
Затем перезапустили сервер, и проблема была решена.