Проблема прогоревшего или удаленного куки с сессией авторизации laravel vue

Рейтинг: 0Ответов: 1Опубликовано: 11.03.2023

Реализовал авторизацию на laravel:breeze, авторизованного пользователя закинул в pinia на фронте, pinia синхронизировал с localStorage.

Все работает, но если зайти через время, когда сессия в куках уже "прогорела" или самостоятельно удалить сессию из кук, то все ломается, потому что информация о пользователе остается в pinia/localStorage и соответственно все "авторизованные" интерфейсы остаются доступны.

Думал увеличить время жизни сессии, но это бессмысленно потому что информация в localStorage, насколько я знаю, лежит бессрочно.

Сессия продляется при каждом запросе на бэк и присылает в заголовке set-cookie время истечения жизни сессии.

Вопрос следующий: как синхронизировать время жизни сессии из кук и юзера из localStorage/pinia?

Ответы

▲ 0Принят

Решил в vue-router с помощью директивы router.beforeEach() перед каждым редиректом отправлять запрос на api/user в котором короткий код:

Route::get('/user', function (Request $request) {
    return $request->user();
});

Это стандартный роут laravel:sanctum, но я убрал middleware(['auth:sanctum']), чтоб не было 401 ошибки на неавторизованного пользователя.

Не самое изящное решение, зато рабочее, если кто-нибудь когда-нибудь зайдет и прочитает всё это и ему покажется мое решение лажей, то закиньте свой ответ, я буду благодарен, а пока все будет работать на такой заглушке. Если же прочитавшему покажется мое решение верным, то апните голосом, чтоб я понимал что все более менее.