Laravel 护照授权令牌在生成新令牌时过期

Posted

技术标签:

【中文标题】Laravel 护照授权令牌在生成新令牌时过期【英文标题】:Laravel passport Authorization token expire on generating new token 【发布时间】:2018-04-11 08:21:40 【问题描述】:

我正在使用 laravel 5.5 和 API 路由的护照身份验证。我正在使用不记名令牌。 问题是旧生成的令牌被接受而不是未经身份验证。 步骤:

创建一个不记名令牌。用它。它工作正常。 无需注销即可创建另一个令牌,它工作正常。 现在,如果我使用第一个创建的令牌,它也可以工作。它不应该工作,但它被接受。

我有什么办法可以做到这一点? 提前致谢。

【问题讨论】:

【参考方案1】:

一种可能的解决方案是: 在创建新令牌之前检查是否存在旧令牌并删除该令牌。为此:

创建一个名为 OauthAccessToken

的模型

如下更新你的用户模型

/**
 * 1:n zu access token, we need to logout users
 *
 * @return \Illuminate\Database\Eloquent\Relations\HasMany
 */
public function accessTokens()

    return $this->hasMany(OauthAccessToken::class);

现在您可以检查并删除用户的所有令牌

if ($user->accessTokens->count() > 0) 
    $user->accessTokens()->delete();

【讨论】:

嗨,Matz,谢谢。我得到了这个并从'oauth_access_tokens'中删除了令牌。它工作正常。我们不能通过刷新令牌来实现吗?

以上是关于Laravel 护照授权令牌在生成新令牌时过期的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 护照延长访问令牌过期时间

Laravel 护照刷新令牌

Laravel Passport令牌过期方法不起作用

Laravel 通过生成的令牌进行身份验证,无需护照和 jwt

用于生成的 Laravel 护照令牌

Laravel 护照创建令牌和刷新令牌