Различный срок действия токенов в зависимости от клиентского Laravel Passport

У меня есть приложение Laravel, использующее аутентификацию по паспорту.

Авторизоваться

public function authenticate(Request $request)
{
    $params = [
        'grant_type' => 'password',
        'client_id' => 1,
        'client_secret' => "secret",
        'username' => request('username'),
        'password' => request('password'),
        'active' => 1,
        'scope' => '*'
    ];

    $request->request->add($params);

    // verify the credentials and create a token for the user
    $proxy = Request::create('oauth/token', 'POST');

    return Route::dispatch($proxy);
}

Я установил истечение AuthServiceProvider:

Passport::routes(function ($router) {
   $router->forAccessTokens();
});
Passport::tokensExpireIn(now()->addMinute(1));
Passport::refreshTokensExpireIn(now()->addDays(30));

Он работает, но через 1 минуту срок действия токена истекает. Мне нужна другая дата истечения срока действия токена в зависимости от того, где я пытаюсь войти в систему, потому что у меня есть веб-сайт, настольное приложение и приложение для Android.

Например:

  • веб-приложение: 8 часов
  • настольное приложение: 1 год
  • приложение для Android: 5 месяцев

Я думал отправить меня оттуда, где я пытаюсь войти в систему, но это хороший способ? Есть ли другие способы сделать это?

На данный момент я пробовал это:

-) удалено из AuthServiceProvider:

Passport::tokensExpireIn(now()->addMinute(1));

И добавлено в функцию входа в систему:

if (request('from') == 'something') {
    Passport::tokensExpireIn(now()->addYears(1));
} else {
    Passport::tokensExpireIn(now()->addHours(8));
}

$proxy = Request::create('oauth/token', 'POST');

Я не думаю, что у тебя есть какие-то проблемы. Возможно, вы можете использовать что-то вроде github.com/jenssegers/agent для проверки пользовательского агента, вместо того, чтобы отправлять что-то еще.

Renato Gomes 15.01.2019 15:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
7
1
1 503
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете получить помощь по ссылке ниже, пожалуйста, найдите

Для получения деталей пользовательского агента и применения базы условий к агенту

например, вы можете использовать код, как показано ниже

if ( Agent::isDesktop() ) {
    Passport::tokensExpireIn(now()->addYears(1));
} else if (Agent::isMobile()){
    Passport::tokensExpireIn(now()->addMonth(5));
}else{
    Passport::tokensExpireIn(now()->addHours(8));
}

Другие вопросы по теме