【问题标题】:Laravel passport personal access token are not expiringLaravel 护照个人访问令牌不会过期
【发布时间】:2019-10-11 17:00:50
【问题描述】:

我正在尝试使用 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 年内到期或到期。但是后来我发现了一些带有这个sn-p的帖子:

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

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

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

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

【问题讨论】:

    标签: laravel token access-token laravel-passport bearer-token


    【解决方案1】:

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

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

    您还需要重新生成您的令牌,因为旧令牌仍有到期日期。

    【讨论】:

    • 问题是我想验证令牌是否过期...您发布的这一行只是将 expires_at 字段设置为 1 个月后。我在 1 年前直接在数据库设置上更改 expires_at 字段。但是我仍然可以使用这个令牌......为什么?这是个问题
    • 啊好的。在检查令牌到期时,不会使用您表中的 expires_at 文件。创建的每个令牌都拥有自己的 expires_at。我将创建一个助手来检查用户令牌是否过期_at
    猜你喜欢
    • 2019-06-22
    • 2020-12-18
    • 2021-01-14
    • 2019-12-22
    • 2021-07-16
    • 1970-01-01
    • 2017-09-13
    • 2018-04-11
    • 2020-09-21
    相关资源
    最近更新 更多