gpt4 book ai didi

laravel - 如何检索 Laravel Passport 访问 token 过期时间或日期时间?

转载 作者:行者123 更新时间:2023-12-01 23:16:11 25 4
gpt4 key购买 nike

我正在使用 Laravel 5.4 和 Passport 4。我只想使用 First-Party-App只要。因此,正如 answer 所建议的那样,我想远离将 ClientID 和 ClientSecret 放在 App 中。我已输入 boot() AuthServiceProvider的方法:

Passport::routes();
Passport::tokensExpireIn(Carbon::now()->addDays(30));
Passport::refreshTokensExpireIn(Carbon::now()->addDays(60));

我在 api.php 中添加了自己的路线接受来自 App 的登录:
Route::post('login', 'Auth\LoginController@apiLogin');

这是我的行动:
public function apiLogin(Request $request)
{
$credentials = $request->only('email', 'password');

if (Auth::attempt($credentials)) {
// Authentication passed...
$user = Auth::user();
$token = $user->createToken('API Access')->accessToken;

return response()->json(["token_type" =>"Bearer","expires_in" => 2592000,"access_token" => $token]);
}

return response()->json(["error" => "invalid_credentials", "message" => "The user credentials were incorrect."], 401);
}

有什么方法可以检索 expires_in 的秒数吗? (30 天 => 2592000 秒)或日期时间,以便我可以自动进行计算?

最佳答案

这是我设法从对象中获取它的方法:

正如蒂姆刘易斯在评论中指出的那样,有一个 $token 属性,$user->createToken('API Access')Laravel\Passport\PersonalAccessTokenResult包含 2 个公共(public)属性的对象:$accessToken (String)$token (Laravel\Passport\Token) .所以我得到了 $objToken = $user->createToken('API Access'); 的 token 并使用 $expiration = $objToken->token->expires_at->diffInSeconds(Carbon::now()); 计算过期时间(以秒为单位) .这是最终代码:

public function apiLogin(Request $request)
{
$credentials = $request->only('email', 'password');

if (Auth::attempt($credentials)) {
// Authentication passed...

Passport::tokensExpireIn(Carbon::now()->addDays(30));
Passport::refreshTokensExpireIn(Carbon::now()->addDays(60));

$user = Auth::user();
$objToken = $user->createToken('API Access');
$strToken = $objToken->accessToken;

$expiration = $objToken->token->expires_at->diffInSeconds(Carbon::now());

return response()->json(["token_type" => "Bearer", "expires_in" => $expiration, "access_token" => $strToken]);
}

return response()->json(["error" => "invalid_credentials", "message" => "The user credentials were incorrect."], 401);
}

但如果在 AuthServiceProvider boot() 中使用这两行,请小心:
Passport::tokensExpireIn(Carbon::now()->addDays(30));
Passport::refreshTokensExpireIn(Carbon::now()->addDays(60));

因为它不会根据此 Laravel Passport Issue 在 Laravel 5.4 的密码授予类型中用个人访问 token 替换到期.

关于laravel - 如何检索 Laravel Passport 访问 token 过期时间或日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51661614/

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