Почему я не могу деавторизовать 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

Другие вопросы по тегам