gpt4 book ai didi

php - 不同的 token 过期取决于客户端 Laravel Passport

转载 作者:可可西里 更新时间:2023-11-01 13:20:30 24 4
gpt4 key购买 nike

我有一个使用 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));

它有效,但 token 在 1 分钟后过期。我想要一个不同的 token 到期日期,具体取决于我尝试登录的位置,因为我有一个网站、桌面应用程序和一个 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');

最佳答案

您可以从以下链接获得帮助,请查找

For getting user agent detail and apply condition base on agent

例如你可以使用如下代码

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

关于php - 不同的 token 过期取决于客户端 Laravel Passport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54072921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com