laravel网络服务中的jwtauth无法正常运行

时间:2019-02-26 13:33:23

标签: laravel api web-services authentication jwt

我正在使用laravel编写Web服务。我想为其添加JWT身份验证。 我的api控制器位于

  

app \ http \ controllers \ api \ v1 \ AuthController.php

项目目录。我的laravel项目版本是5.7。我使用以下命令来安装和配置软件包:

composer require tymon/jwt-auth:dev-develop --prefer-source

然后

php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"

php artisan jwt:secret

最后我将以下内容添加到app \ kernel.php

protected $routeMiddleware = [
....
'auth.jwt' => \Tymon\JWTAuth\Http\Middleware\Authenticate::class,

];

因为我使用的是laravel 5.7,所以我未向config / app.php文件添加任何内容。现在我想在控制器中使用JWTAuth,当我使用JWTAuth时,如下所示:

  

使用JWTAuth;

出现错误说:未定义的类JWTAuth ...

我重新安装了它,并多次作曲了dum-autoload,但是没有用。我在做什么错了?

3 个答案:

答案 0 :(得分:1)

在app.php配置文件中,别名数组下,您可能想要添加JWTAuth门面。

'JWTAuth' => 'Tymon\JWTAuth\Facades\JWTAuth'

'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class

答案 1 :(得分:0)

对于低于5.5的版本,还需要在config/app.php文件中设置服务提供商和别名。

'providers' => [
    ....
    Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class,
    ....
],
'aliases' => [
    ....
    'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
    'JWTFactory' => 'Tymon\JWTAuth\Facades\JWTFactory',
    ....
],

如果您使用的是5.5或更高版本,laravel会使用Package Auto-Discovery自动执行。

答案 2 :(得分:0)

在您的app\Http\Middleware\JwtMiddleware.php中代替

use JWTAuth;

使用此

use Tymon\JWTAuth\Facades\JWTAuth;

但是请确保您已经在App.php文件中包含了这个外观