我是编码新手,目前正在开发一个项目,但遇到了一个阻止我继续前进的错误。请注意,我必须手动添加 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');
});
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');
}
}
我已经检查了名称,看看是否拼写错误,并且我已经验证文件是否位于正确的文件夹中。一切似乎都井然有序。
尝试使用不同的文件名,例如“CheckAdminRole”。谢谢。