Почему я не могу деавторизовать Rack-mini-profiler для пользователей без прав администратора
Я пытаюсь установить Rack-mini-profiler на мое приложение ROR. Я установил гем, и профилировщик отлично работает в разработке, но я не могу деавторизовать определенные запросы для пользователей, не являющихся администраторами. Я поместил следующий код в мой ApplicationController before_filter
def authorize_mini_profiler
if current_user.nil?
Rack::MiniProfiler.deauthorize_request
return
elsif is_admin_user
Rack::MiniProfiler.authorize_request
return
end
Rack::MiniProfiler.deauthorize_request
end
В отладке я увидел, что метод deauthorize вызывается, но профилировщик все еще отображается.
Я даже пытался использовать этот код
def authorize_mini_profiler
Rack::MiniProfiler.deauthorize_request
end
но, тем не менее, каждый запрос любого пользователя отображает профилировщик.
Кто-нибудь знает в чем может быть проблема?
1 ответ
Ну, для тех, кто сталкивается с той же проблемой...
При более глубокой отладке выяснилось, что гем настроен на игнорирование механизма авторизации при инициализации. Чтобы включить профилирование только в некоторых случаях (например, не в производстве или только для пользователей с правами администратора), необходимо переопределить конфигурацию по умолчанию в application.rb
(или предпочтительно какой-то конкретный конфигурационный файл):
Rack::MiniProfiler.config.authorization_mode = :whitelist if Rails.env.production?
в противном случае конфигурация установлена на :allowall