用途:为 Laravel 应用提供完整的基于角色的访问控制(RBAC),管理角色(如 admin、writer)、权限(如 edit articles)、路由保护与界面授权。
主要能力:角色与权限模型、中间件路由保护、Blade 指令、直接权限与角色权限继承、多租户 Teams 作用域、通配符层级权限、超级管理员绕过、事件审计(v6.15.0+)、查询作用域、Sanctum/Passport API 集成、Policy 集成、缓存管理、Artisan 命令、UUID 与自定义模型、测试支持。
使用方式:安装后为 User 模型添加 HasRoles trait;在 DatabaseSeeder 中播种角色与权限;用 $user->assignRole('admin') 分配角色,用 $user->can('edit articles') 检查权限;路由用 Route::middleware(['role:admin']) 或 API 用 ['auth:sanctum', 'permission:edit,api'];Blade 用 @role('admin')、@can('edit articles');查询用 User::role('admin')->get()、User::permission('edit articles')->get();多租户用 setPermissionsTeamId($team->id);通配符用 $role->givePermissionTo('articles.*');超级管理员用 Gate::before();修改权限后执行 php artisan permission:cache-reset。
适用场景:需要细粒度授权、多租户权限隔离、API 鉴权、审计日志的 Laravel 项目。
限制与注意:命名建议 kebab-case(edit-articles);不要在控制器硬编码角色检查,应使用中间件;API 需指定 guard;测试中需在 setUp()/beforeEach() 重置缓存;不要用 * 通配符授予超级管理员,应使用 Gate::before();同一动作不要同时用 Policy 和 Permission 作为唯一来源。Laravel 13 兼容 Spatie Permission 8.x(需 PHP 8.3+ 与 Laravel 12/13),v6→v7→v8 升级涉及事件类与命令后缀变更、clearClassPermissions() 移除等。具体安装命令与完整代码示例资料中未提供。