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, но, похоже, она не работает.
Есть ли у кого-нибудь представление о том, почему это может не работать? Большое вам спасибо заранее!
Ответы
Ответ 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