在 laravel 护照中注销用户

Posted

技术标签:

【中文标题】在 laravel 护照中注销用户【英文标题】:Logging out the user in laravel passport 【发布时间】:2018-06-07 10:19:18 【问题描述】:

我正在使用 Laravel 5.5 进行 API 开发,我们如何使用 laravel 护照注销用户?它与网络中的注销相同还是有什么不同?提前致谢。

【问题讨论】:

你到底想要什么? @kunal 在用户注销时撤销对用户的访问权限 【参考方案1】:

上述解决方案不适用于 laravel 5.5 和护照(我测试过) 这似乎是一个 JWT 解决方案。

如果您正在寻找 Passport 的方式,您可以这样做:

$request->user()->token()->revoke()

假设当前路由使用的是 auth:api 中间件

相同的来源: https://laracasts.com/discuss/channels/laravel/passport-how-can-i-manually-revoke-access-token

【讨论】:

【参考方案2】:
 $value = $request->bearerToken();
 $id= (new Parser())->parse($value)->getHeader('jti');
 $token= $request->user()->tokens->find($token);
 $token->revoke();

参考:https://laracasts.com/discuss/channels/laravel/passport-how-can-i-manually-revoke-access-token

【讨论】:

【参考方案3】:

这样做:

public function logout() 
        $accessToken = Auth::user()->token();
        DB::table('oauth_refresh_tokens')
            ->where('access_token_id', $accessToken->id)
            ->update([
                'revoked' => true
            ]);

        $accessToken->revoke();
        return response()->json(null, 204);
    

【讨论】:

你刚刚给了我我正在寻找的提示,谢谢@php Worm @VishalParkash 太棒了!这个答案是很久以前发布的。现在在最新版本中可能有另一种方法可以做到这一点。 蠕虫,是的。但是您的回答帮助我找到了另一个好的解决方案:)【参考方案4】:

这样做:

auth()->user()->token()->revoke();

【讨论】:

以上是关于在 laravel 护照中注销用户的主要内容,如果未能解决你的问题,请参考以下文章

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

Laravel 护照 - 允许用户作为/登录为其他用户

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

身份验证用户提供程序 [passport] 未使用 laravel 护照定义

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

如何在 laravel 中进行前端 api 身份验证