【问题标题】:Class jwt-auth does not exist error when using middleware in Laravel 5.1在 Laravel 5.1 中使用中间件时,类 jwt-auth 不存在错误
【发布时间】:2016-05-15 14:36:25
【问题描述】:

我按照官方的JWT-Auth安装https://github.com/tymondesigns/jwt-auth/wiki/Installation.

现在我的控制器中有一个中间件:

$this->middleware('jwt-auth', ['only' => ['postChange', 'postChoose']]);

我还在config/app.php 的提供者数组中添加了Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class

但是,当我向 API 发出请求时,我收到以下错误消息:

ReflectionException in Container.php line 737:
Class jwt-auth does not exist

任何帮助都将不胜感激。

【问题讨论】:

    标签: php laravel-5.1 jwt


    【解决方案1】:

    我在使用中间件时遇到同样的问题,您必须在 app/Http/Kernel.php$routeMiddleware 属性下注册它们:

    protected $routeMiddleware = [
        ...
        'jwt.auth' => 'Tymon\JWTAuth\Middleware\GetUserFromToken',
        'jwt.refresh' => 'Tymon\JWTAuth\Middleware\RefreshToken',
    ];
    

    【讨论】:

    • 我已经注册了..你是用jwt.auth还是jwt-auth作为中间件
    • @digitlimit 我使用 jwt.auth 作为中间件。
    • 谢谢。似乎官方文档信息量不大。
    • 你运行 PHPUnit 测试吗?我正在尝试通过在出现错误的测试中使用令牌来发出请求
    • 记得放置那些单引号(')。它们非常重要。
    【解决方案2】:

    我也遇到过类似的问题。 你必须准确地添加

    protected $routeMiddleware = [
        .......
        'jwt.auth' => \Tymon\JWTAuth\Middleware\GetUserFromToken::class,
        'jwt.refresh' => \Tymon\JWTAuth\Middleware\RefreshToken::class,
    ];
    

    记住开头的“\”。

    Laravel 5.2

    【讨论】:

    • 在 laravel 8 中也有效
    【解决方案3】:

    我遇到了同样的问题,结果发现路径开头需要“\”(类似于其他中间件条目):

    'jwt.auth' => \Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class
    

    这解决了我的问题(Laravel 5.1.4)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-30
      • 2016-03-07
      • 2019-09-13
      • 1970-01-01
      • 2018-06-26
      • 2017-06-10
      • 1970-01-01
      • 2017-05-11
      相关资源
      最近更新 更多