Я играл пару дней с Laravel API без сохранения состояния с аутентификацией на основе JWT, где я храню токен в cookie.
Все хорошо, кроме проверки cookie (в). ..
Я установил свой файл cookie следующим образом:
Cookie::queue(Cookies::NAME, $token, (int) env('COOKIE_VALIDITY'), Cookies::PATH, env('COOKIE_DOMAIN'), env('COOKIE_SECURE'), Cookies::HTTPONLY, Cookies::RAW, Cookies::SAMESITE);
$redirectUrl = $request->query('redirectTo') ?? route('home');
return redirect($redirectUrl);
Это работает, он устанавливает файл cookie. Тем не менее, моя печенька Expires / Max-Age, кажется, всегда на один час позади. 2019-10-12T08:51:35.737Z
(когда на самом деле 9:51)
Хотя файлы cookie отправляются корректно на все последующие запросы.
Самая большая проблема, однако, - это недействительность файлов cookie. Мое действие по выходу из системы выглядит следующим образом
return redirect('/login')->withCookies([Cookie::forget(Cookies::NAME)]);
Действие вызывается, но файл cookie остается неизменным. Я также пытался с помощником cookie()->forget()
, это имеет тот же результат.
Есть какие-либо подсказки, что я здесь делаю неправильно?
Ps: я вижу, что laravel по умолчанию добавляет сеансcookie, я полагаю, это нормально, из-за того, что я захожу на сайт как анонимный пользователь и для этого получаю сеанс для этого? Я спрашиваю, потому что проблема для меня в том, чтобы иметь полный API без сохранения состояния, который использует только отображаемую страницу входа на стороне сервера, а затем перенаправляет обратно в какой-то вид SPA.
Вся помощь очень ценится.