Несоответствие токена CSRF в файлах cookie и html - PullRequest
1 голос
/ 06 марта 2020

Как я могу получить токен CSRF 'правильно'?

Я пытаюсь использовать Ax ios для входа в мой Vue SPA.

Я изменил все на Vue компонент, кроме маршрутов Auth::routes();, сгенерированных php artisan ui:auth. Поэтому я больше не могу использовать @csrf в своих формах и должен отправить токен csrf через заголовок ax ios. Я пробовал почти все в течение 2 дней, пока не заметил, что XSRF TOKEN, данный моим печеньям Laravel, отличается от того, что я получаю в моем HTML ... Пожалуйста, обратитесь к фотографиям ниже.

Это исходит от инструментов разработчика.

enter image description here enter image description here

app.blade . php

Я добавил это, чтобы установить извлечение токена CSRF и прикрепить его к заголовкам ax ios.

enter image description here

В console.log () я вижу другой токен. enter image description here

Токен, который я получаю, когда я console.log (): o3nQRW6IqiKdNGOdiHc59pYXXD3sBw8YfbpCPvf7

enter image description here

Почему бы просто не получить токен CSRF у повара ie, а затем использовать document.cookie?, То же самое. Он не совпадает всякий раз, когда я console.log ().

Это определенно причина, почему, что бы я ни делал, я всегда получал несоответствие токена CSRF с ошибкой 419. Что может быть причиной этого?

Примечание. Я использую только Auth::routes() в файле api.php. Ничего в web.php. Странно, я смог зарегистрировать пользователя ОДНАЖДЫ, но больше никогда из-за той же проблемы.

1 Ответ

1 голос
/ 06 марта 2020

Сложно сказать в данный момент, но, надеюсь, это поможет:


Ваш SPA не входит в ваше приложение Laravel? Затем я предлагаю использовать новый пакет Laravel Airlock, который обрабатывает токен CSRF для вас. Дополнительную информацию можно найти здесь: https://laravel.com/docs/7.x/airlock

Laravel Воздушный шлюз переименован в Sanctum: https://blog.laravel.com/airlock-renamed-to-sanctum

Если ваш SPA находится внутри вашего Laravel приложения, посмотрите на конфигурацию вашего ios axe, если он использует X-CSRF-Token в заголовке. Дополнительную информацию можно найти здесь: https://laravel.com/docs/6.x/csrf#csrf -x-csrf-token

...