2015-12-02 3 views
0

может кто-нибудь объяснит мне эту строку кодов?Devise Rails API

skip_before_filter :verify_authenticity_token, :if => Proc.new { |c| c.request.format == 'application/json' } 

и должен ли я использовать его? Почему и почему нет. Спасибо.

+0

Также см. Http://stackoverflow.com/questions/23773730/rails-4-skipping-protect-from-forgery-for-api-actions –

ответ

1

The verify_authenticity_token является before_action (метод вызывается перед каждым действием контроллера, известный как before_filter до Rails 4), который использует рельсы для защиты от CSRF атак. You can read more about how Rails does this here.

Что такое эта строка кода: «если это запрос JSON, то пропустите проверку CSRF для этого контроллера».

Это полезно для API-интерфейсов JSON, которые должны быть доступны для удаленных сайтов, которые не находятся в одном домене, и поэтому не смогут проверить CSRF. Это безопасно, если вы уверены, что the API is being authenticated properly. Однако, если ваш контроллер НЕ будет использоваться внешним веб-приложением (и вы просто делаете вещи AJAX на своем собственном сайте), то не выключайте проверку verify_authenticity_token.

+0

Итак, вы говорите, что в моем коде нет ничего плохого? На моей консоли в журнале говорится: «ПРЕДУПРЕЖДЕНИЕ: Невозможно проверить подлинность CSRF-токена» для запросов json-разработки. Это опасно? При использовании мои контроллеры для API являются отдельными. У меня также есть администратор rails в моем веб-приложении. – ana

+0

Спасибо за помощь :) – ana

+0

Прочтите это сообщение: http://stackoverflow.com/questions/9362910/rails-warning-cant-verify-csrf-token-authenticity-for-json-devise-requests – rlarcombe