目标类 [admin] 不存在。拉拉维尔 11

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

我是编码新手,目前正在开发一个项目,但遇到了一个阻止我继续前进的错误。请注意,我必须手动添加 Kernel.php 文件,因为在我创建 Laravel 项目时它没有安装。

我正在使用 Laravel 11。

我收到错误:目标类 [admin] 不存在。

这是 web.php :

Route::get('/', function () {
return view('welcome');
});

Route::get('/dashboard', function () {
return view('back.dashboard');
})-\>middleware(\['auth', 'verified', 'admin'\])-\>name('dashboard');

Route::middleware('auth')-\>group(function () {
Route::get('/profile', \[ProfileController::class, 'edit'\])-\>name('profile.edit');
Route::patch('/profile', \[ProfileController::class, 'update'\])-\>name('profile.update');
Route::delete('/profile', \[ProfileController::class, 'destroy'\])-\>name('profile.destroy');
});

这是 Kernel.php :

protected $middlewareAliases = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class,
    'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
    'can' => \Illuminate\Auth\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
    'precognitive' => \Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class,
    'signed' => \App\Http\Middleware\ValidateSignature::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,

    'admin' => \App\Http\Middleware\Admin::class,
    'checkRole' => \App\Http\Middleware\CheckRole::class,
];

这是中间件 Admin.php :

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Symfony\Component\HttpFoundation\Response;

class Admin extends Middleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response)  $next
     */
    public function handle(Request $request, Closure $next): Response
    {
        $user = Auth::user();

        if ($user && str_contains($user->role, 'admin')){
            return $next($request);
        }

        abort(403, 'Accès non autorise');

    }
}

我已经检查了名称,看看是否拼写错误,并且我已经验证文件是否位于正确的文件夹中。一切似乎都井然有序。

laravel routes kernel middleware
1个回答
0
投票

尝试使用不同的文件名,例如“CheckAdminRole”。谢谢。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.