Аутентификация гостя в REST API
Делаю тренировочной интернет-магазин. Нужно сделать добавление в корзину/просмотр корзины/оформление заказа и тд доступным не только для авторизованных юзеров , но и для гостей. Не могу понять как это сделать в stateless api.
На данный момент делаю следующим образом: в посреднике проверяю гость это или нет - если да, то просто генерирую ему uuid и возвращаю его в куках (пользователя не создаю). Потом уже к этому юиду вяжется корзина. Чет типа:
public function handle(Request $request, Closure $next): Response
{
if (!$this->isFirstVisit($request)){
return $next($request);
}
$guest_id = Str::uuid();
$response = $next($request->merge(['guest' => $guest_id]));
return $response->withCookie(cookie('csuid', $guest_id,secure: true));
}
Мне не нравится почему то идея использования куков в рест, однако куда ни гляну в магазинах - кидают ююид или токен в куки (идею генерации токенов для гостей я немного не понял, если кто может рассказать зачем - буду рад:)).
Главной вопрос - как мне реализовать аутентификацию гостя в рест. Как мне его 'запомнить' без сессии. Может действительно делать endpoint типа auth/guest/token, писать гостя в бд без каких либо данных с type = 'guest', а дальше работать как с авторизированным пользователем(токен в Header:Authorization).
Дело еще в том, что я не до конца понимаю ,как работает клиентская часть - потому что для меня загадка - как у юзера при входе сразу возникает токен и ююиды в куках . Я не думаю, что они генерируются на JS стороне, тк соответствующих запросов я не вижу.
В общем если кто подскажет - буду чудовищно благодарен ибо ломаю голову уже третий день.