Подтвердить что ты не робот

Rails 3.2 - Отключить защиту CSRF для действия контроллера

У меня есть контроллер под названием ProductController, и я создал действие с именем set_status для целей вызовов PUT API из клиентского приложения .NET. Я правильно настроил все настройки, но после отправки запроса я получаю сообщение об ошибке "Не могу проверить подлинность CSRF-токена". В моем контроллере приложений для защиты CSRF у меня есть следующее:

protect_from_forgery

Чтобы обойти защиту CSRF, я добавил в контроллер продуктов следующее:

skip_before_filter :set_status

После тестирования с этим изменением я все равно получаю то же сообщение об ошибке. Основываясь на моем понимании, приведенная выше строка кода должна отключить защиту CSRF для действия set_status в контроллере Products, но, похоже, она не работает.

Есть ли у кого-нибудь представление о том, почему это может не работать? Большое вам спасибо заранее!

4b9b3361

Ответ 1

Я понял! Вот мой код:

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

Я забыл, что оператор protect_from_forgery создает собственные методы. Одним из таких методов является verify_authenticity_token, и поэтому он оказался намного проще, чем я думал. Я застрял раньше, потому что у меня не было метода verify_authenticity_token, но я действительно сделал это, потому что он генерировался автоматически.

Для рельсов 6+

skip_before_action :verify_authenticity_token