如何定义Laravel Authorization中的Policy策略类?
- 内容介绍
- 文章标签
- 相关推荐
本文共计932个文字,预计阅读时间需要4分钟。
《策略类不是写了就能用的配置项,它必须被正确注册、配置模型,并在调用时传入对应实例,否则+》
策略类生成后必须手动注册到 AuthServiceProvider
运行 php artisan make:policy PostPolicy --model=Post 只是创建文件,不自动绑定。你得在 app/Providers/AuthServiceProvider.php 的 boot() 方法里显式注册:
- 单个策略:用
Gate::policy(Post::class, PostPolicy::class) - 多个策略:推荐在
registerPolicies()中统一注册(该方法默认已调用),并在$policies数组中添加映射,例如:Post::class => PostPolicy::class - 如果模型使用了自定义命名空间(如
App\Models\Post),$policies键必须完全一致,大小写敏感
$this->authorize() 调用时传参错误导致策略不触发
这是最常被忽略的坑:授权方法签名和调用参数必须严格匹配。
本文共计932个文字,预计阅读时间需要4分钟。
《策略类不是写了就能用的配置项,它必须被正确注册、配置模型,并在调用时传入对应实例,否则+》
策略类生成后必须手动注册到 AuthServiceProvider
运行 php artisan make:policy PostPolicy --model=Post 只是创建文件,不自动绑定。你得在 app/Providers/AuthServiceProvider.php 的 boot() 方法里显式注册:
- 单个策略:用
Gate::policy(Post::class, PostPolicy::class) - 多个策略:推荐在
registerPolicies()中统一注册(该方法默认已调用),并在$policies数组中添加映射,例如:Post::class => PostPolicy::class - 如果模型使用了自定义命名空间(如
App\Models\Post),$policies键必须完全一致,大小写敏感
$this->authorize() 调用时传参错误导致策略不触发
这是最常被忽略的坑:授权方法签名和调用参数必须严格匹配。

