API без сохранения состояния с недействительным файлом cookie JWT - PullRequest
0 голосов
/ 12 октября 2019

Я играл пару дней с 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.

Вся помощь очень ценится.

1 Ответ

0 голосов
/ 14 октября 2019

Для кого это может касаться, я нашел проблему. Очевидно, что указание имени файла cookie недостаточно.

return redirect('/login')->withCookies([Cookie::forget(Cookies::NAME, Cookies::PATH, env('COOKIE_DOMAIN'))]);

Отлично работает.

...