用途:在 Laravel 项目中实施授权与输入安全加固,覆盖模型级授权、全局权限、批量赋值与 CSRF 防护。
主要能力与用法:
- 授权与 RBAC。用 php artisan make:policy PostPolicy --model=Post 生成策略;在策略中实现 update(User $user, Post $post): bool 等方法;控制器中调用 $this->authorize('update', $post)。全局权限用 Gate::define('admin', fn(User $user) => ...),通过 Gate::allows('admin') 或 Blade @can('admin') 检查。模型绑定检查优先用 Policy,全局权限用 Gate。管理员绕过可在 AuthServiceProvider 中定义 Gate::before(fn($u) => $u->isAdmin() ? true : null)。
- 配置与环境。仅在 config/*.php 中调用 env(),应用代码用 config('app.key');控制器中禁止 env()。可运行 php artisan config:cache 验证 env() 未被误用。
- 数据与输入安全。用 Form Request 的 rules() 并调用 $request->validated() 传给 Model::create();模型定义 $fillable,禁止传 $request->all()。所有 Blade <form> 加 @csrf;web 路由默认启用 CSRF,仅对可信第三方回调使用 ->except(['/webhook'])。角色检查用 Policy 方法内角色判断、Gate::before 管理员绕过或 spatie/laravel-permission,禁止内联 $user->role === 'admin'。
反模式:config 文件外使用 env();自定义认证逻辑;未验证的批量赋值;在 Blade 中写授权逻辑。
限制:资料未提供具体版本要求、完整代码示例与更多边界说明。