【问题标题】:Laravel 7 Sanctum logoutLaravel 7 圣所注销
【发布时间】:2020-10-11 06:47:53
【问题描述】:

我正在为我的应用使用 Laravel 7 和 Sanctum 身份验证。
如何实现注销程序?
我用:

Auth::user()->tokens()->delete();

它可以工作,但它会删除该用户的所有令牌。 我只想删除请求注销的用户的令牌,这样其他会话应该保持打开状态

【问题讨论】:

    标签: laravel laravel-sanctum


    【解决方案1】:

    您需要指定用户:

    // Revoke a specific user token
    Auth::user()->tokens()->where('id', $id)->delete();
    
    // Get user who requested the logout
    $user = request()->user(); //or Auth::user()
    // Revoke current user token
    $user->tokens()->where('id', $user->currentAccessToken()->id)->delete();
    

    Laravel 7, 8 的更新:

    // Revoke the token that was used to authenticate the current request...
    $request->user()->currentAccessToken()->delete();
    
    // Revoke a specific token...
    $user->tokens()->where('id', $tokenId)->delete();
    

    【讨论】:

    • 如何获取token ID?
    • @enfix 将是 Auth::user()->tokens()->where('id', $id)->get('field_name')->first(); field_name 是您存储令牌的 column 名称。
    • 不,我不知道如何设置 $id 变量。不是 id 令牌吗?
    • @enfix,在这种情况下 id 和 token 不同。如果您是登录用户,那么您可以通过$id = Auth::user()->id; 获取$id 所以它会是Auth::user()->tokens()->where('id', Auth::user()->id)->delete();
    • 我解决使用这个解决方案:Auth::user()->tokens()->where('id', Auth::user()->currentAccessToken()->id)->删除();
    【解决方案2】:

    注销时,使用currentAccessToken()可以直接删除token。

    $request->user()->currentAccessToken()->delete();
    

    【讨论】:

    • 调用未定义的方法 App\User::currentAccessToken()
    • 在你的 User 模型上添加 HasApiTokens 特征
    • 即使我的请求用户具有特征,也没有骰子:/
    • 如果您使用当前的 AccessToken,这也可以 auth()->user()->tokens()->delete()
    【解决方案3】:

    Laravel 8.x.x 更新

    您可以使用三种不同的方法

    // Revoke all tokens...
    $user->tokens()->delete();
    
    // Revoke the token that was used to authenticate the current request...
    $request->user()->currentAccessToken()->delete();
    
    // Revoke a specific token...
    $user->tokens()->where('id', $tokenId)->delete();
    

    【讨论】:

      猜你喜欢
      • 2020-11-02
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 2020-06-27
      • 2021-01-20
      • 2019-04-30
      • 2017-10-26
      • 1970-01-01
      相关资源
      最近更新 更多