显示目标类[App\Http\Middleware\JwtMiddleware]不存在

问题描述 投票:0回答:1

尝试登录时出现以下错误:

{ "message": "目标类 [App\Http\Middleware\JwtMiddleware] 不存在。”, "exception": "Illuminate\Contracts\Container\BindingResolutionException", “文件”:“/home/u476373343/domains/xyz.com/public_html/backend/vendor/laravel/framework/src/Illuminate/Container/Container.php” }

namespace App\Http\Middleware;

use Closure;
use Exception;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Tymon\JWTAuth\Exceptions\JWTException;
use Tymon\JWTAuth\Exceptions\TokenExpiredException;
use Tymon\JWTAuth\Exceptions\TokenInvalidException;
use Tymon\JWTAuth\Facades\JWTAuth;

class Jwtmiddleware
{
    public function handle(Request $request, Closure $next): Response
    {
        try {
            $user = JWTAuth::parseToken()->authenticate();
        } catch (Exception $e) {
            if ($e instanceof TokenInvalidException) {
                return response()->json(['status' => 'Token is Invalid']);
            } else {
                if ($e instanceof TokenExpiredException) {
                    return response()->json(['status' => 'Token is Expired']);
                } else {
                    if ($e instanceof JWTException) {
                        return response()->json(['status' => 'Token could not be parsed']);
                    } else {
                        return response()->json(['status' => 'Authorized token not found']);
                    }
                }
            }
        }

        return $next($request);
    }
}

api.php

Route::group(['middleware' => ['jwt.verify']], function () {
    Route::post('getmenuitem', [MenuTypeController::class, 'getMenuItemData']);
}

内核.php

protected $middlewareAliases = [
    'jwt.verify' => \App\Http\Middleware\JwtMiddleware::class,
];
php laravel rest jwt middleware
1个回答
0
投票

查看您的代码,问题似乎出在类名的大小写敏感性上。在您的

Kernel.php
文件中,您已将中间件注册为
JwtMiddleware
,但实际的类名称是
Jwtmiddleware

要解决此问题,您应该在中间件文件中将类

Jwtmiddleware
重命名为
JwtMiddleware

namespace App\Http\Middleware;

use Closure;
use Exception;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Tymon\JWTAuth\Exceptions\JWTException;
use Tymon\JWTAuth\Exceptions\TokenExpiredException;
use Tymon\JWTAuth\Exceptions\TokenInvalidException;
use Tymon\JWTAuth\Facades\JWTAuth;

class JwtMiddleware
{
    // ...
}

并确保文件名也是

JwtMiddleware.php
。进行这些更改后,尝试再次运行您的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.