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

Nil*_*esh 1 api oauth-2.0 laravel laravel-passport

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

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

有什么办法可以实现这一目标吗?提前致谢。

Mat*_*atz 5

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

创建一个名为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);
}
Run Code Online (Sandbox Code Playgroud)

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

if ($user->accessTokens->count() > 0) {
    $user->accessTokens()->delete();
}
Run Code Online (Sandbox Code Playgroud)