laravel - 一种策略适用于多种模型
问题描述
是否可以对多个模型使用相同的策略?
我有一个具有 21 个关系的模型,因此,编辑任何这些模型的权限都是相同的 - 所以我将维护 22 个策略。
解决方案
您不能对多个模型使用相同的策略,因为当您创建策略时,您必须注册它才能生效,在 laravel 中创建策略需要应用模型,而注册策略需要该策略的模型适用于:
// in AuthServiceProvider Class:
protected $policies = [
Post::class => PostPolicy::class,
];
这里的第一个参数是模型类....
但:
您可以使用 Gate,并尝试使您的代码尽可能通用:
Gate::define('update-entity', function ($user, $entity) {
// your code logic
return ....;
});
在你的控制器中:
if (Gate::allows('update-entity', $current_entity)) {
// The current user can update the post...
}
有关盖茨和政策的更多详细信息:
推荐阅读
- java - 如何使用 MyBatis 从 Oracle 读取 NUMBER 列的“NULL”值
- python-3.x - 使用 selenium 选择单选按钮值
- python - 如何转换为浮点数(从 HEX 字符串)?
- java - 用于返回任何数据库列的 Java REST 端点
- azure - 如何获取 Azure Text To Speech 的可用语音列表?
- android - 在 Play 商店中导入 APK
- python - 稀疏矩阵Python的秩
- agens-graph - 如何在 AgensGraph 上的可变长度边中找到内部顶点?
- r - 如何控制网络布局算法的异常节点?
- javascript - 将表单保存到数据库的 Keyup 功能