Laravel sanctum csrf cook ie каждый запрос? - PullRequest
0 голосов
/ 21 марта 2020

Я использую Laravel sanctum (бывший Airlock) и у меня есть вопрос по этому поводу. Я прочитал в документах:

Для аутентификации вашего SPA, страница входа вашего SPA должна сначала сделать запрос на маршрут / sanctum / csrf-cook ie, чтобы инициализировать защиту CSRF для приложения:

axios.get('/sanctum/csrf-cookie').then(response => {
// Login... }); 

После инициализации защиты CSRF необходимо выполнить запрос POST к типичному Laravel / маршруту входа в систему. Этот маршрут / вход в систему может быть предоставлен пакетом аутентификации laravel / ui.

Означает ли это, что при каждом моем запросе я должен сначала проверить, был ли установлен флаг ie? Потому что, скажем, у меня есть пользователь, который регистрируется. Перед выполнением запроса POST для регистрации пользователя я должен сначала выполнить запрос GET, чтобы получить CSRF-Cook ie из моего бэкэнда, а затем выполнить запрос POST для регистрации пользователя.

Теперь пользователь перенаправляется на страницу входа в систему и попросили войти. Должен ли фронтенд сначала проверить, есть ли CSRF-Cook ie, и, если его нет, сначала снова сделать запрос GET, чтобы получить повара ie?

Этот последний бит также меня смущает, потому что при вызове метода register пользователь фактически не входит в систему, поэтому пользователь должен быть перенаправлен на страницу входа, чтобы войти с учетными данными, которые пользователь только что заполнил для регистрации, что для меня кажется плохим опыт, верно?

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Как только вы нажмете axios.get('/sanctum/csrf-cookie') API, после этого вам не придется нажимать его снова и снова для каждого запроса, потому что этот /sanctum/csrf-cookie сохранит маркер XSRF в браузере, а Ax ios отправит его с запрос.

Подробнее об этом можно узнать из этого видео: https://www.youtube.com/watch?v=8Uwn5M6WTe0

0 голосов
/ 21 марта 2020

Когда вы получите токен csrf, в следующем запросе laravel обновит автоматы токена c, поэтому вам не нужно фокусироваться на этом после axios.get('/sanctum/csrf-cookie').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...