如何使JWT令牌无效

问题描述 投票:1回答:3

我试图从JWT无效(或删除)一个令牌,但我无法做到这一点。首先我做了类似这样的回答Logout issue with Laravel JWT-auth authentication

JWTAuth::invalidate(JWTAuth::getToken())):

但我得到这个错误:

非静态方法Tymon \ JWTAuth \ JWT :: invalidate()不应该静态调用,假设$ this来自不兼容的上下文

然后我做了这样的事情:

use Illuminate\Http\Request;
use Tymon\JWTAuth\JWTAuth;

class AuthController extends Controller
{
    protected $jwt;

    public function __construct(JWTAuth $jwt)
    {
        $this->jwt = $jwt;
    }

    public function invalidateToken(Request $request)
    {
        $this->jwt->parseToken()->invalidate();

        return response()->json(array('message' => 'log out'));
    }

    ...
}

但我仍然可以将令牌用于其他请求,我无法删除或使其无效。

我做错了什么使令牌无效?

编辑:

我从这里读到了另外一个问题,并在github (this is the library I'm using)上发布了JWT回购的帖子,我按照所有的例子来使无效或删除令牌,我仍然无法删除或使其无效。

php laravel jwt
3个回答
0
投票

如果.env文件中的cache_driver设置为数组以外的其他内容,则黑名单功能有效。

将其更改为文件对我有用。但是,在我的特定情况下,我也在使用Entrust,这会在cache_driver设置为file或database时导致问题。所以,不得不放弃黑名单/无效功能。

希望这有助于某人。


0
投票

这就是我认为它应该是这样的:$this->jwt->setToken($old_token)->invalidate(true);


-3
投票
JWTAuth::invalidate(old token);
© www.soinside.com 2019 - 2024. All rights reserved.