lumen升级到5.8 jwt报错 Tymon\JWTAuth\Blacklist::__construct() must be an instance of Tymon\JWTAuth\Contracts\Providers\Storage null given
时间: 2024-09-27 13:12:23 浏览: 31
jwt-auth-guard:用于Laravel和Lumen框架的JWT Auth Guard
当你尝试将Laravel Lumen应用升级到5.8版本,并在使用Tymon/JWTAuth库处理JSON Web Token (JWT)时遇到这个错误,说明你在初始化JWT黑名单存储时遇到了问题。Tymon\JWTAuth的Blacklist构造函数期望一个实现了Tymon\JWTAuth\Contracts\Providers\Storage接口的实例,但在实际操作中传递的是null。
这通常意味着两个可能性:
1. 未正确配置JWT存储:检查你的`config/jwt.php`文件,确保`'provider'`键对应的值是一个实现了Storage接口的服务提供商,比如`'Illuminate\Session\Store'` 或者 `Tymon\JWTAuth\Providers\Storage\Session`。确保你已经设置了存储服务并且能够正确连接数据库或会话。
2. 区分Lumen和Laravel:Lumen有自己的Session API,而Laravel的Session API可能有所不同。确认你是否正确地导入了Lumen的Session支持,并且使用的存储驱动设置正确。
修复这个问题,你需要找到配置中指定的存储实例并确保它已经被创建和初始化。如果你使用的是session存储,检查session服务是否可用。如果问题依然存在,可以尝试提供一个具体的实例,例如:
```php
$storage = new \Tymon\JWTAuth\Providers\Storage\Session();
Tymon\JWTAuth::setContainer(function () use ($storage) {
return [
'auth.providers.users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'jwt.blacklist' => $storage,
];
});
```
完成以上步骤后,再次尝试运行应用。若仍有疑问,
阅读全文