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