You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 11使用Spatie权限包报错:Target class [permission]不存在

Laravel 11 集成 Spatie Laravel Permission 解决「Target class [permission] does not exist」报错

Laravel 11 移除了传统的 kernel.php 文件,中间件别名的注册逻辑迁移到了 bootstrap/app.php 中,按以下步骤操作即可解决报错:

  1. 打开项目根目录下的 bootstrap/app.php 文件
  2. 在 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 16:45:54