目标类 [Spatie\Permission\Middlewares\RoleMiddleware] 不存在

Ram*_*Ram 2 permissions kernel roles laravel

好吧,我对 laravel 有点陌生,我尝试使用 Spatie 来获取角色和权限,但是发生了这个错误,即使我已经在 kernel.php 中编写了类名:

\n
<?php\n\nnamespace App\\Http;\n\nuse Illuminate\\Foundation\\Http\\Kernel as HttpKernel;\n\nclass Kernel extends HttpKernel\n{\n    /**\n     * The application's global HTTP middleware stack.\n     *\n     * These middleware are run during every request to your application.\n     *\n     * @var array<int, class-string|string>\n     */\n    protected $middleware = [\n        // \\App\\Http\\Middleware\\TrustHosts::class,\n        \\App\\Http\\Middleware\\TrustProxies::class,\n        \\Illuminate\\Http\\Middleware\\HandleCors::class,\n        \\App\\Http\\Middleware\\PreventRequestsDuringMaintenance::class,\n        \\Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize::class,\n        \\App\\Http\\Middleware\\TrimStrings::class,\n        \\Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull::class,\n    ];\n\n    /**\n     * The application's route middleware groups.\n     *\n     * @var array<string, array<int, class-string|string>>\n     */\n    protected $middlewareGroups = [\n        'web' => [\n            \\App\\Http\\Middleware\\EncryptCookies::class,\n            \\Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse::class,\n            \\Illuminate\\Session\\Middleware\\StartSession::class,\n            \\Illuminate\\View\\Middleware\\ShareErrorsFromSession::class,\n            \\App\\Http\\Middleware\\VerifyCsrfToken::class,\n            \\Illuminate\\Routing\\Middleware\\SubstituteBindings::class,\n        ],\n\n        'api' => [\n            // \\Laravel\\Sanctum\\Http\\Middleware\\EnsureFrontendRequestsAreStateful::class,\n            \\Illuminate\\Routing\\Middleware\\ThrottleRequests::class.':api',\n            \\Illuminate\\Routing\\Middleware\\SubstituteBindings::class,\n        ],\n    ];\n\n    /**\n     * The application's middleware aliases.\n     *\n     * Aliases may be used instead of class names to conveniently assign middleware to routes and groups.\n     *\n     * @var array<string, class-string|string>\n     */\n    protected $middlewareAliases = [\n        'auth' => \\App\\Http\\Middleware\\Authenticate::class,\n        'auth.basic' => \\Illuminate\\Auth\\Middleware\\AuthenticateWithBasicAuth::class,\n        'auth.session' => \\Illuminate\\Session\\Middleware\\AuthenticateSession::class,\n        'cache.headers' => \\Illuminate\\Http\\Middleware\\SetCacheHeaders::class,\n        'can' => \\Illuminate\\Auth\\Middleware\\Authorize::class,\n        'guest' => \\App\\Http\\Middleware\\RedirectIfAuthenticated::class,\n        'password.confirm' => \\Illuminate\\Auth\\Middleware\\RequirePassword::class,\n        'permission' => \\Spatie\\Permission\\Middlewares\\PermissionMiddleware::class,\n        'precognitive' => \\Illuminate\\Foundation\\Http\\Middleware\\HandlePrecognitiveRequests::class,\n        **'role' => \\Spatie\\Permission\\Middlewares\\RoleMiddleware::class,**\n        'role_or_permission' => \\Spatie\\Permission\\Middlewares\\RoleOrPermissionMiddleware::class,\n        'signed' => \\App\\Http\\Middleware\\ValidateSignature::class,\n        'throttle' => \\Illuminate\\Routing\\Middleware\\ThrottleRequests::class,\n        'verified' => \\Illuminate\\Auth\\Middleware\\EnsureEmailIsVerified::class,\n    ];\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我错过了什么或者写错了什么吗?\n(顺便说一句,如果有帮助的话,我使用 Laravel v10.30.1)

\n

我尝试使用此路由访问视图:\nRoute::middleware('role:super-admin')->get('/dashboard', [AdminController::class, 'index'])->name('admin');

\n

供应商框架告诉我这一点:\n\\public\\index.php :\xe2\x80\x8951 require_once

\n

下面是发生错误的行:

\n
$app = require_once __DIR__.'/../bootstrap/app.php';\n\n$kernel = $app->make(Kernel::class);\n\n**$response = $kernel->handle(**\n    $request = Request::capture()\n)->send();\n
Run Code Online (Sandbox Code Playgroud)\n

Top*_*ems 8

尝试使用\Middleware\而不是\Middlewares\

'role' => \Spatie\Permission\Middleware\RoleMiddleware::class,
'permission' => \Spatie\Permission\Middleware\PermissionMiddleware::class,
'role_or_permission' => \Spatie\Permission\Middleware\RoleOrPermissionMiddleware::class,
Run Code Online (Sandbox Code Playgroud)

https://spatie.be/docs/laravel-permission/v6/basic-usage/middleware#content-package-middleware