【问题标题】:How to invalidate a JWT token PHP如何使 JWT 令牌 PHP 无效
【发布时间】:2016-12-03 03:41:31
【问题描述】:

我正在尝试使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


【解决方案1】:

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

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

希望这对某人有所帮助。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:
      JWTAuth::invalidate(old token);
      

      【讨论】:

        猜你喜欢
        • 2017-05-30
        • 2023-01-27
        • 2020-02-09
        • 2021-04-13
        • 2021-09-25
        • 2019-03-19
        • 2016-12-23
        • 2015-05-19
        相关资源
        最近更新 更多