2015-05-10 12 views
7

Mam funkcję ajax, która wyzwala usunięcie wpisu z mojej bazy danych.Yii 2.0 Weryfikacja CSRF dla żądania AJAX

Muszę dokonać walidacji CSRF dla tego samego. Jak mogę to zrobić?

Wysyłam CSRF cookie wraz z moją prośbą o wpis, ale Yii 2.0 nie sprawdza poprawności i wszelkie dane wejściowe przekazane przez ajax docierają do serwera.

Jak wykonać walidację CSRF dla żądań ajax.

Czy musimy ręcznie ustawić plik cookie i sprawdzić?

Odpowiedz

3

Nie trzeba ręcznie ustawiać pliku cookie.

Jeśli korzystasz z jQuery, token CSRF zostanie wysłany automatycznie.

Na przykład dla angularjs można go dodać ręcznie do żądania params tak:

yii.getCsrfParam(): yii.getCsrfToken() 

Upewnij się, że YiiAsset włączone.

przeciwnym razie można pobrać je z meta tagi (to w zasadzie co te dwie metody):

$('meta[name=csrf-param]').prop('content'): $('meta[name=csrf-token]').prop('content') 

Należy również pamiętać, że w celu umożliwienia walidacji CSRF zarówno Controller „s i Request” s nieruchomość enableCsrfValidation nieruchomość musi być ustawiony do true.

Aktualizacja:

Kolejną ważną rzeczą, aby zrozumieć:

CSRF żeton będą sprawdzane tylko na tej metody: GET, HEAD, OPTIONS.

Upewnij się również, że masz główny układ w wersji <?= Html::csrfMetaTags ?>.

+0

Bu jak to potwierdzi. Co mam napisać w akcji kontrolera, aby sprawdzić, czy jest zatwierdzony, czy nie? –

+0

Co masz na myśli przez walidację? – arogachev

+0

Mam na myśli, że gdy ktoś wysyła dane bez odpowiednich danych csrf, nie powinien być w stanie wykonać akcji kontrolera –

0

W końcu stwierdziła, że ​​właśnie w tym

<?= Html::csrfMetaTags() ?>

w układ elektronicznej automatycznie dodać walidację CSRF aby każdy post/get żądań czy jest ajax lub not.We nie trzeba ręcznie wysłać csrf tokena wraz z aja

<?= Html::csrfMetaTags() ?>

wniosek zawodzi i rzucanie exception..So to był mój mistake..Just dodanie <?= Html::csrfMetaTags() ?>

zrobi walidacji CSRF czy jest ajax lub braku złożenia żądania ajax/form ..

Czapki z głów do Yii 2.0 wynalazców na takie niesamowite rzeczy # love-yii-2.0

Powiązane problemy