Laravel 7.0 - tymon/jwt-auth - 检查令牌是否有效

Fra*_*cis 2 jwt laravel jwt-auth

尝试使用 tymon/jwt-auth (JWT) 在 laravel 安装中实现登录端点。登录、注销、获取用户数据工作正常。我想要一个端点来检查承载令牌。有一种简短的方法可以通过以下方式实现这一目标:

Route::get('/valid', function () {
    return 1;
})->middleware('auth:api');
Run Code Online (Sandbox Code Playgroud)

如果令牌有效,则 HTTP 返回代码 == 200,但如果无效,则返回 401 代码。由于端点正在检查令牌而不是经过身份验证的通信,我宁愿让控制器返回真/假关于有效令牌的 200 - OK。

我查看了模块的“幕后”,这就是我得到的程度(不工作):

            $tokenKey = $request->bearerToken();
            $jws = \Namshi\JOSE\JWS::load($tokenKey);

            $jwsSimple = new SimpleJWS($jws->getHeader());
            $jwsSimple::load($tokenKey);
            $jwsSimple->setPayload($jws->getPayload());
            $jwsSimple->setEncodedSignature(explode('.', $tokenKey)[2]);

            $tmpVal = $jwsSimple->isValid($tokenKey);
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来实现这一目标?我认为应该有一个服务提供商,但无法弄清楚如何实现这一点。先感谢您。

GTC*_*ais 8

You could remove the auth:api middleware and then have something like:

return response()->json([ 'valid' => auth()->check() ]);
Run Code Online (Sandbox Code Playgroud)