Laravel Sanctum:如何配置令牌的到期日期?

Jar*_*ler 4 laravel laravel-sanctum

背景和需求

在我的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];
});
Run Code Online (Sandbox Code Playgroud)

我想设置一个过期延迟,用于将令牌的创建日期与当前检查令牌过期的日期进行比较:令牌的创建日期为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;
            }
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它正是我想要的。但是,我不知道如何为该属性设置自己的值$expiration

在同一个文件中,有一些对现有配置文件的暗示,如下所示:config('sanctum.guard', 'web'). 此外,该类SanctumServiceProvider实例化Guard以下值并将其传递给其构造函数:config('sanctum.expiration')。但我不知道如何/在哪里定义这个配置值。也许https://laravel.com/docs/8.x/configuration config(['sanctum.expiration' => '1277126']);?请您确认一下吗?(但是这条线该放在哪里呢?

问题

我的问题是:在 Laravel 8 Sanctum 中,我如何为$expiration用于 Sanctum 令牌检查的变量设置自己的值?我应该编辑配置文件吗?如果是,如何编辑?我应该在终端中输入配置命令吗?

Nor*_*tol 5

您可以发布 Laravel 配置:

php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
Run Code Online (Sandbox Code Playgroud)

请参阅https://laravel.com/docs/8.x/sanctum#installation

此后,您可以更改 中的所有配置选项config/sanctum.php。中的配置文件config将覆盖vendor默认配置。