Как сделать csrf валидацию ajax-запроса

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
egorpromo
Сообщения: 113
Зарегистрирован: 2012.11.25, 12:24

Как сделать csrf валидацию ajax-запроса

Сообщение egorpromo » 2013.12.01, 17:03

Подскажите, кто знает, как в Yii2 работает csrf-валидация ajax-запросов.
Пока я нарыл следующее. Во-первых, в Yii на javascript написан вспомогательный код, который можно увидеть здесь. В нём я нашёл метод initCsrfHandler(), который, как я понял, устанавливает для всех ajax-запросов, которые делаются при помощи библиотеки jquery, HTTP-заголовок X-CSRF-Token, значение для которого берётся из тега meta на странице. Это всё можно увидеть там же в скрипте. С этим всё ясно.
Во вторых. Как по-моему делается ajax-запрос? Я думаю, что он делается на один из экшенов контроллера. csrf-валидация для любого экшена производится в методе Request::validateCsrfToken(). Но я там вижу, что проверка на заголовок X-CSRF-Token там не производится.
Где фреймворк производит валидацию ajax-запросов? Где-то можно увидеть доки по вопросам ajax-запросов в Yii2?

Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Как сделать csrf валидацию ajax-запроса

Сообщение vova07 » 2013.12.01, 18:13

Вы уже описали весь процес валидации AJAX запросов и не только их. А проверка о которой вы спрашиваете прописана вот тут. В проверке она вызывается тут. Доков вроде еще нет, но непонятно в чем именно проблема, и что именно вам не понятно.

egorpromo
Сообщения: 113
Зарегистрирован: 2012.11.25, 12:24

Re: Как сделать csrf валидацию ajax-запроса

Сообщение egorpromo » 2013.12.02, 15:16

vova07 писал(а):Вы уже описали весь процес валидации AJAX запросов и не только их. А проверка о которой вы спрашиваете прописана вот тут. В проверке она вызывается тут. Доков вроде еще нет, но непонятно в чем именно проблема, и что именно вам не понятно.
О,спасибо! Не обратил внимания на эту строку. Буду копаться дальше.

Ответить