我已经在我的Lumen(5.8.4)应用程序中实现了tymon / jwt-auth版本1.0.0-rc4.1作为第三方,现在我继续在https://github.com/dingo/api/wiki/Authentication之后使用Dingo实现Authentication,我需要添加它(或以任何其他方式注册jwt与dingo)
app('Dingo\Api\Auth\Auth')->extend('jwt', function ($app) {
return new Dingo\Api\Auth\Provider\JWT($app['Tymon\JWTAuth\JWTAuth']);
});
到app.php我收到此错误
错误:构建[Dingo \ Api \ Auth \ Auth,Dingo \ Api \ Routing \ Router]时,目标[Dingo \ Api \ Contract \ Routing \ Adapter]无法实例化。
我想我已经在这个主题上搜索并尝试了互联网上存在的所有东西,因为我正在研究它2天,而且大多数都使用旧版本的野狗和/或流明。我也试过了我在git上找到的不同的适配器,但是没有它们适用。
这是我的设置:composer.json:
"require": {
"php": ">=7.1.3",
"dingo/api": "^2",
"flipbox/lumen-generator": "^5.6",
"laravel/lumen-framework": "5.8.*",
"nesbot/carbon": "^2.17",
"tymon/jwt-auth": "1.0.0-rc4.1",
"vlucas/phpdotenv": "^3.3"
}
app.php
app('Dingo\Api\Auth\Auth')->extend('jwt', function ($app) {
return new Dingo\Api\Auth\Provider\JWT($app['Tymon\JWTAuth\JWTAuth']);
}); <- this makes problem, without this everything works, I even get jwt in postman
$app->register(Tymon\JWTAuth\Providers\LumenServiceProvider::class);
$app->register(Dingo\Api\Provider\LumenServiceProvider::class);
$app->register(App\Providers\AppServiceProvider::class);
$app->register(App\Providers\AuthServiceProvider::class);
有人在新版本上实现了实现,或者有更好的方法吗?我已经尝试了一个工作示例https://github.com/krisanalfa/lumen-jwt但是我看到上次更新是2年前,流明版本是5.4。我可以使用它还是不推荐使用它?
好的,我终于开始工作了。如果有人遇到同样的问题,我接下来做了,在我注册的AppServiceProvider中
use Dingo\Api\Auth\Provider\JWT;
并在同一文件中的boot方法中:
public function boot()
{
Schema::defaultStringLength(191);
app('Dingo\Api\Auth\Auth')->extend('jwt', function ($app) {
return new JWT($app['Tymon\JWTAuth\JWTAuth']);
});
}
在auth.php中
'defaults' => [
'guard' => env('AUTH_GUARD', 'api'),
],
'guards' => [
'api' => [
'driver' => 'jwt',
'provider' => 'users'
],
],
在jwt.php中
'providers' => [
'jwt' => Tymon\JWTAuth\Providers\JWT\Lcobucci::class,
'auth' => Tymon\JWTAuth\Providers\Auth\Illuminate::class,
'storage' => Tymon\JWTAuth\Providers\Storage\Illuminate::class,
],
然后保护路线,例如:
$api->group(['middleware' => 'api.auth'], function ($api) {
$api->get('/users', 'App\Http\Controllers\UserController@index');
});
另外,请注意,如果您遇到异常“令牌签名无法验证”,请在通过POSTMAN发送jwt时删除引号:)
最好的祝福。