Проблема прогоревшего или удаленного куки с сессией авторизации laravel vue
Реализовал авторизацию на laravel:breeze, авторизованного пользователя закинул в pinia на фронте, pinia синхронизировал с localStorage.
Все работает, но если зайти через время, когда сессия в куках уже "прогорела" или самостоятельно удалить сессию из кук, то все ломается, потому что информация о пользователе остается в pinia/localStorage и соответственно все "авторизованные" интерфейсы остаются доступны.
Думал увеличить время жизни сессии, но это бессмысленно потому что информация в localStorage, насколько я знаю, лежит бессрочно.
Сессия продляется при каждом запросе на бэк и присылает в заголовке set-cookie время истечения жизни сессии.
Вопрос следующий: как синхронизировать время жизни сессии из кук и юзера из localStorage/pinia?
Ответы (1 шт):
Решил в vue-router с помощью директивы router.beforeEach() перед каждым редиректом отправлять запрос на api/user в котором короткий код:
Route::get('/user', function (Request $request) {
return $request->user();
});
Это стандартный роут laravel:sanctum, но я убрал middleware(['auth:sanctum']), чтоб не было 401 ошибки на неавторизованного пользователя.
Не самое изящное решение, зато рабочее, если кто-нибудь когда-нибудь зайдет и прочитает всё это и ему покажется мое решение лажей, то закиньте свой ответ, я буду благодарен, а пока все будет работать на такой заглушке. Если же прочитавшему покажется мое решение верным, то апните голосом, чтоб я понимал что все более менее.