【发布时间】:2021-03-30 00:49:37
【问题描述】:
背景和需求
在我的 api 路由文件中,我按照文档 (https://laravel.com/docs/8.x/sanctum#introduction) 编写了以下代码:
Route::post('/tokens/create', function (Request $request) {
$token = $request->user()->createToken($request->token_name);
return ['token' => $token->plainTextToken];
});
我想设置一个过期延迟,用于将创建令牌的日期与当前检查令牌过期的日期进行比较:令牌的创建日期为x,当前日期为y,延迟时间为d,因此如果y > x + d,令牌将过期。
我做了什么
所以我阅读了目录vendor/laravel/sanctum 中的一些代码,并找到了Guard.php 类。
Guard.php 类包含一个名为 $expiration 的对象属性、一个设置它的构造函数(除其他外),以及包含以下过期检查的 __invoke 方法:
if (! $accessToken ||
($this->expiration &&
$accessToken->created_at->lte(now()->subMinutes($this->expiration))) ||
! $this->hasValidProvider($accessToken->tokenable)) {
return;
}
如您所见,它完全符合我的要求。但是,我不知道如何为属性$expiration 设置我自己的值。
在同一个文件中,有一些对现有配置文件的暗示,例如:config('sanctum.guard', 'web')。此外,类SanctumServiceProvider 实例化Guard 并将以下值传递给其构造函数:config('sanctum.expiration')。但我不知道如何/在哪里定义这个配置值。也许https://laravel.com/docs/8.x/configurationconfig(['sanctum.expiration' => '1277126']);?你能确认一下吗? (但是这条线应该放在哪里?)
问题
我的问题是:在 Laravel 8 Sanctum 中,我如何为用于 Sanctum 令牌检查的变量 $expiration 设置我自己的值?我应该编辑配置文件吗?如果是,如何编辑?我应该在终端中键入配置命令吗?
【问题讨论】: