2014-04-29 26 views
10

Mam kontroler o nazwie ProductsController i utworzyłem akcję o nazwie set_status w celu wywołania PUT API z aplikacji klienckiej .NET. Wszystkie ustawienia zostały poprawnie skonfigurowane, ale po wysłaniu żądania otrzymuję komunikat "Nie można zweryfikować autentyczności tokenu CSRF". Mam następujący w moim kontrolera wniosek o ochronę CSRF:Railsy 3.2 - Wyłączenie ochrony CSRF dla akcji kontrolera

protect_from_forgery 

Aby ominąć ochronę CSRF, dodałem do mojego kontrolera następujące produkty:

skip_before_filter :set_status 

Po przetestowaniu z tą zmianą , Nadal otrzymuję ten sam komunikat o błędzie. Na podstawie mojego zrozumienia powyższy wiersz kodu powinien wyłączyć ochronę CSRF dla akcji set_status w kontrolerze Produktów, ale wydaje się, że nie działa.

Czy ktoś ma wgląd w to, dlaczego to nie działa? Z góry bardzo dziękuję!

Odpowiedz

18

Wymyśliłem! Oto mój kod:

skip_before_filter :verify_authenticity_token, :only => [:set_status] 

zapomniałem że protect_from_forgery instrukcja tworzy metod własnych. Jedną z tych metod jest verify_authenticity_token, więc było to znacznie prostsze niż myślałem. Utknąłem wcześniej, ponieważ nie miałem metody verify_authenticity_token, ale zrobiłem to, ponieważ zostało wygenerowane automatycznie.

+1

W nowszych wersjach szyn użyj 'skip_before_action' zamiast' skip_before_filter'. (skip_before_filter jest przestarzałe) –