首页 > 解决方案 > Laravel 护照个人访问令牌不会过期

问题描述

我正在尝试使用 Laravel 护照,但我不知道我是否发现了错误或遗漏了什么。

登录控制器:

    $user = $request->user();
    $tokenResult = $user->createToken('Personal Access Token');
    $token = $tokenResult->token;
    $token->expires_at = Carbon::now()->addWeeks(1);
    $token->save();

所以我在用户登录时创建令牌。在数据库上,我看到生成的令牌有 expires_at 字段:一周后,所以它是正确的。但是,如果我将这个值更改为旧日期,我仍然可以使用这个令牌......

Laravel 只是忽略了这个领域?为什么?

我做了我的研究,但我有点困惑......很多人说令牌不会在 1 年内过期或过期。但后来我发现了一些带有这个片段的帖子:

public function boot(){
        $this->registerPolicies();

        Passport::routes();
        Passport::tokensExpireIn(Carbon::now()->addHours(24));
        Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));
}

我了解 tokensExpireIn 设置 expires_at 字段,而 refreshTokensExpireIn 用于在用户每次使用他的令牌时刷新此字段...

但是如果 Laravel 无论如何都不检查这个字段,那是没有用的。

标签: laraveltokenaccess-tokenlaravel-passportbearer-token

解决方案


您还可以设置个人令牌的到期日期

 Passport::personalAccessTokensExpireIn(now()->addMonths(1));

您还需要重新生成您的代币,因为旧代币仍有其到期日期。


推荐阅读