微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django 中基于特定模型属性值的对象权限

如何解决Django 中基于特定模型属性值的对象权限

我想弄清楚如何设置一些权限来访问和更改 Django 中的某些模型。我认为内置权限系统不够灵活,我很确定答案在 Django Guardian 中,但我一直无法弄清楚如何将其应用于我的案例。

我拥有的模型结构要复杂得多,但我认为以下简化的用例说明了设置权限时的瓶颈,如果我解决了这个问题,我应该能够将其应用于其余模型,在需要的地方。

让我们考虑以下三个模型:

  • 组织:研究组织,通常是一所大学。
  • 用户:网络应用的注册用户,可以是贡献者(认)或维护者(所有维护者也是贡献者)。目前这两个是组,但如果更好,我愿意尝试其他方法用户将始终属于一个组织
  • ValuableData:一些研究所得的数据。它由贡献者添加,他们属于用户添加数据时所属的组织。它还具有可见性。

现在,最后一点是问题所在。可见性定义了谁有权对 ValuableData 执行什么操作,它可以采用三个值:

  • 私有:只有添加数据的用户才能查看、更改或删除该数据。没有其他人可以以任何方式访问它 - 除了超级用户,但我们暂时忽略它。
  • 内部:ValuableData 组织内的任何用户都可以查看数据;只有同一组织内的维护者才能更改或删除它。
  • 公共:任何用户 - 无论其组织如何 - 都可以查看数据;只有同一组织内的维护者才能更改或删除它。

我需要处理的权限是标准权限(添加、查看、更改和删除),但在对象级别定义。这就是为什么我认为 Django Guardian 是答案,但是如何或在哪里 - 在应用程序的哪个文件、类或函数中 - 需要应用它们让我无法理解。作为最后一条信息,我正在使用 Django Admin 访问添加和更改模型的所有功能(因为它已经存在,为什么不呢?)从长远来看,我的生活更轻松。

总而言之,有没有人给我设置上述权限结构的建议 - 我最初认为这是一个简单的结构,但似乎并不那么明显。

非常感谢您的支持

迭戈

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。