Паспорт Laravel: увеличить срок действия куки "laravel_token" - PullRequest
0 голосов
/ 25 мая 2019

В моем проекте реализован Laravel Passport, и все работает хорошо, за исключением времени истечения срока хранения файлов cookie, в котором хранятся токены (это всего 1 час).

Мой проект состоит из серверной части Laravel 5.8.api (с паспортом Laravel), который обслуживает фронтальное приложение SPA (Vue).

Пользователи из моего приложения могут успешно войти в систему, используя страницу с компонентом Vue, который выполняет запрос POST с учетными данными пользователя и, если вход в системууспешно выполнено, пользователи перенаправлены на новый URL (дом приложения) - это перенаправление представляет собой запрос GET, который создает cookie-файл «laravel_token», созданный промежуточным программным обеспечением CreateFreshApiToken.

Теперь пользователи могутходите повсюду внутри приложения, и все данные, необходимые от компонентов приложения, получаются с помощью вызовов ajax (Laravel заметит наличие cookie «laravel_token» в этих вызовах ajax и идентифицирует вошедшего в систему пользователя, используя JWT, присутствующий в этом cookie).

Моя проблема:

Файл cookie laravel_tokenэто было создано, когда пользователь, вошедший в систему, был создан со временем жизни всего 1 час.Поскольку это SPA, этот файл cookie никогда не обновляется (обменивается на новый с новым временем жизни) ... поэтому через 1 час, когда необходимо выполнить новый ajax-запрос к внутреннему серверу Laravel, он будетполучить неаутентифицированный ответ - это имеет смысл, потому что файл cookie laravel_token устарел.

Как вы решаете эту проблему?

Я знаю, что могу обновить этот файл cookie, выполнив полное обновление /перезагрузить страницу до истечения срока действия этого файла cookie, но это не очень хорошее решение с точки зрения взаимодействия с пользователем.

Я не могу сделать ajax-вызов, чтобы обновить этот файл cookie, потому что это SPA, а у меня нетclient_id и это секрет со стороны клиента ... а также потому, что не только этот файл cookie является httponly, но и зашифрован Laravel - поэтому я не могу обменять его на новый, используя JS.

Isединственное решение увеличить время жизни этого куки (с 1 часа до .... 1 года, например)?Вы видите какие-либо проблемы с этим?И где я могу установить этот срок действия куки?Нужно ли расширять класс ApiTokenCookieFactory?

Я бы хотел, чтобы пользователь входил в систему до тех пор, пока он намеренно не выполнит запрос на выход из системы или не истечет access_token (что, в моем случае, я использую значения по умолчанию для Laravel Passport,является долгоживущим токеном на 1 год).

Буду признателен, если кто-нибудь сможет мне помочь с этой проблемой.

Если вы видите что-то, что я делаю не так, я тожеБуду признателен за ваши комментарии с предложениями.

Большое спасибо!

...