#laravel #jwt #laravel-passport
#laravel #jwt #laravel-паспорт
Вопрос:
Раньше я использовал чистую jwt
библиотеку в своих PHP-проектах. Для продления токена пользователя я использую токен обновления. В паспорте Laravel такой концепции нет. Существует только токен доступа, у которого есть время истечения срока действия.
Представьте, что я установил время на 1 час. Через час пользователь выходит из системы во время работы на веб-сайте. Какова наилучшая практика в Laravel?
Пожалуйста, не упоминайте о длительном истечении времени, которое не является решением.
Комментарии:
1. итак, вам нужно решение с использованием passport?
2. @lagbox Да, вероятно.
Ответ №1:
В Laravel Passport есть токены обновления: https://laravel.com/docs/8.x/passport#refreshing-tokens
Токены обновления также могут истекать, но они довольно долговечны. Токены обновления, если они скомпрометированы, бесполезны, поскольку злоумышленнику требуется идентификатор клиента и секрет в дополнение к токену обновления, чтобы получить токен доступа.
Вы можете настроить время жизни токена, как описано здесь: https://laravel.com/docs/8.x/passport#token-lifetimes
Общие варианты использования включают получение новых токенов доступа после истечения срока действия старых или получение доступа к новому ресурсу в первый раз.
Комментарии:
1. Спасибо. Но ссылка, которую вы упомянули, предназначена для
oauth
протокола. Я просто хочу авторизовать своего пользователя простым способом.2. Предполагая, что вы разрабатываете API для приложения первого производителя или SPA, вам нужен
password-grant
поток. Это очень похоже на JWT. laravel.com/docs/8.x/passport#creating-a-password-grant-client3. Как указано в документах:
The OAuth2 password grant allows your other first-party clients, such as a mobile application, to obtain an access token using an e-mail address / username and password. This allows you to issue access tokens securely to your first-party clients without requiring your users to go through the entire OAuth2 authorization code redirect flow.
4. У меня есть пара стандартных проектов, которые вы можете использовать, чтобы понять, как это работает. Nuxt.js использование: github.com/pktharindu/nuxt-laravel-passport-example Шаблон паспорта: github.com/pktharindu/laravel-api-boilerplate-passport
5. Ваш
login
маршрут использует'Laravel\Passport\Http\Controllers\AccessTokenController@issueToken'
. Возвращает ли он как токен доступа, так и токен обновления?