用途:在 Laravel 应用中封装授权逻辑,实现基于资源的访问控制。Policy 类为模型定义各项操作是否允许,并委托给权限系统判定。
主要能力:支持 Laravel 约定的标准 Policy 方法,包括 viewAny()(列表/索引)、view()(查看单个资源)、create()(创建)、update()(更新)、delete()(删除)、restore()(恢复软删除)、forceDelete()(永久删除);也可自定义方法处理非标准操作,如 cancel()、approve()、ship() 等。
关键模式:一是委托权限系统,如 return $user->can(Permission::CreateOrders);;二是所有权检查,结合权限与 $order->customer_id === $user->customer_id;三是状态检查,如 && $order->isPending();四是复用已有方法,例如 cancel() 内调用 $this->update($user, $order) 并加上 $order->canBeCancelled()。权限使用枚举(如 Permission::ListOrders)而非字符串。
路由用法:可通过路由的 can() 方法授权,例如 Route::get('/orders', [OrderController::class, 'index'])->can('viewAny', Order::class);,以及 ->can('view', 'order')、->can('create', Order::class)。路由级授权的更多内容参见 routing-permissions.md。
限制与说明:资料未提供安装方式、依赖版本、收费或价格信息,暂未提供。建议保持 Policy 简单聚焦,遵循 Laravel 命名约定,按需检查所有权与状态。