Laravel 7.30.6报错BindingResolutionException:Target class [admin]不存在,如何解决?
解决Laravel 7.30.6中「Target class [admin] does not exist」错误
错误原因
你在路由组中使用了admin中间件,但在app/Http/Kernel.php的$routeMiddleware配置数组里,并未注册这个中间件,导致Laravel无法找到对应的类,从而抛出绑定解析异常。
解决方案
1. 创建Admin中间件
通过Artisan命令生成中间件文件:
php artisan make:middleware Admin
执行后会在app/Http/Middleware目录下生成Admin.php文件。
2. 编写管理员验证逻辑
打开生成的Admin.php,在handle方法中添加验证用户是否具备管理员权限的逻辑(示例以用户模型的is_admin字段为例,可根据实际需求调整):
<?php namespace App\Http\Middleware; use Closure; class Admin { public function handle($request, Closure $next) { // 验证用户已登录且是管理员 if (auth()->check() && auth()->user()->is_admin === 1) { return $next($request); } // 无权限时的跳转逻辑,可按需修改 return redirect('/')->with('error', '你没有访问该页面的权限'); } }
3. 在Kernel.php中注册中间件
打开app/Http/Kernel.php,找到$routeMiddleware数组,添加admin中间件的映射:
protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::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, 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, // 添加这一行 'admin' => \App\Http\Middleware\Admin::class, ];
4. 清理缓存(可选但推荐)
执行以下命令清除路由和配置缓存,确保新配置生效:
php artisan route:clear php artisan config:clear
内容的提问来源于stack exchange,提问作者Muhammad Manik Uddin
相关产品推荐
相关产品推荐

