Laravel 护照 api:auth 中间件 "Function name must be a string"

Laravel Passport api:auth middleware "Function name must be a string"

我们目前使用的是 Laravel 版本 6 和 Passport 版本 8.1。我们在使用 auth:api 中间件时遇到了一些奇怪的事情。当我们调用中间件时,它总是 returns 一个 error.

"message": "Function name must be a string", "exception": "Symfony\Component\Debug\Exception\FatalThrowableError", "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 172

我们尝试禁用所有中间件并以各种可能的方式调用中间件。删除 auth:api 中间件时,它工作得很好,但当然,如果没有身份验证,那是没有用的。

我们在 Laracasts here 上发现了类似的问题,但没有链接解决方案。也许这里有人可以为我们指明正确的方向?

此错误通常与缺少中间件有关。

auth 中间件必须在 App\Http\Kernel 中注册:

protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    // ...
];

\App\Http\Middleware\Authenticate class 应该扩展包含实际逻辑的 \Illuminate\Auth\Middleware\Authenticate