【问题标题】:How to grant permission to view a page based on a hierarchy of users如何根据用户的层次结构授予查看页面的权限
【发布时间】:2011-07-07 20:32:31
【问题描述】:

我正在为企业解决方案开发面向用户的 django 应用程序。目前,用户可以将网站上的数据归类为仅对他们自己可见的私人收藏。一项功能请求是让经理能够查看其下属的私人收藏。

我的问题是,实现这种层次结构的最佳解决方案是什么?我想到了几个解决方案:

  • 从用户到名为 manager 的用户的外键。创建一个@user_passes_test 测试,该测试通过从集合的所有者查看的经理关系递归,直到a)请求用户被发现是经理,或b)经理为空,表明请求用户无权访问此页面.
    • 优点:用最少的数据准确地表示简单的层次结构
    • 缺点:大的层次结构会导致很多查询
  • 在用户和称为管理员的用户之间创建多对多关系。创建此表中的所有关系。
    • 优点:只需一次查询,用户可以拥有多个管理员。
    • 缺点:当有人离开时很难改变层次结构。

我也愿意接受人们提出的任何其他建议。

【问题讨论】:

  • 您是否考虑过建立与 Treebeard 或 MPTT 的关系?
  • 两个都不熟悉,我先研究一下。
  • @Elf:看起来 MPTT 是我想要的。如果您需要代表,请将其作为答案发布,我会接受。

标签: database django hierarchy


【解决方案1】:

统一数据树(其中节点和叶子引用的数据属于同一类)通常可以通过基于 SQL 的树结构轻松维护。虽然您总是可以手写一个,但Django MPTTTreebeard 都解决了这个问题。我用过 Treebeard,但 MPTT 似乎更受欢迎。

【讨论】:

  • 我喜欢 MPTT 的一点是,修改节点父节点不需要自定义 API 调用。这意味着我可以使用管理界面来管理我的层次结构。
猜你喜欢
  • 1970-01-01
  • 2014-09-28
  • 2015-12-11
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
  • 2016-08-04
  • 2020-10-09
相关资源
最近更新 更多