Laravel 11使用Spatie权限包报错:Target class [permission]不存在
Laravel 11 集成 Spatie Laravel Permission 解决「Target class [permission] does not exist」报错
Laravel 11 移除了传统的 kernel.php 文件,中间件别名的注册逻辑迁移到了 bootstrap/app.php 中,按以下步骤操作即可解决报错:
- 打开项目根目录下的
bootstrap/app.php文件 - 在
withMiddleware()闭包中,通过$middleware->alias()方法注册 Spatie 权限包的三个中间件别名:
return Application::configure(basePath: dirname(__DIR__)) ->withRouting( web: __DIR__.'/../routes/web.php', commands: __DIR__.'/../routes/console.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) { // 注册Spatie权限中间件别名 $middleware->alias([ 'role' => \Spatie\Permission\Middleware\RoleMiddleware::class, 'permission' => \Spatie\Permission\Middleware\PermissionMiddleware::class, 'role_or_permission' => \Spatie\Permission\Middleware\RoleOrPermissionMiddleware::class, ]); }) ->create();
完成注册后,即可正常在路由或控制器中使用 ->middleware('permission:xxx')、->middleware('role:xxx') 这类权限校验写法。
内容的提问来源于stack exchange,提问作者saintadjie
相关产品推荐
相关产品推荐

