2013-04-08 6 views
7

Próbuję zainstalować program Rack-mini-profiler w mojej aplikacji ROR. Zainstalowałem klejnot, a profiler działa świetnie w rozwoju, ale nie mogę wycofać autoryzacji konkretnych żądań dla użytkowników niebędących administratorami. umieściłem następujący kod w moim ApplicationController before_filterDlaczego nie mogę cofnąć autoryzacji programu Rack-mini-profiler dla użytkowników nie będących administratorami?

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 

W debugowania Widziałem, że metoda Cofnij autoryzację nazywa ale profiler jest nadal wyświetlany.

Próbowałem nawet przy użyciu tego kodu

def authorize_mini_profiler 
    Rack::MiniProfiler.deauthorize_request 
end 

ale nadal każdy wniosek przez dowolnego użytkownika wyświetla profilera.

Czy ktoś wie, jaki może być problem?

Odpowiedz

15

Cóż, dla tych, którzy prowadzą na ten sam problem ...

Deeper debugowania okazało się, że klejnot jest skonfigurowany do ignorowania mechanizm autoryzacji na init. W celu umożliwienia profilowania tylko w niektórych przypadkach (np non produkcji lub tylko dla użytkowników admin) trzeba zastąpić domyślną konfigurację w application.rb (lub korzystnie jakiegoś konkretnego pliku konfiguracyjnym):

Rack::MiniProfiler.config.authorization_mode = :whitelist if Rails.env.production? 

inaczej konfiguracja jest ustawiona na :allowall

Powiązane problemy