具有细粒度访问控制的Django身份验证

时间:2010-01-17 10:22:07

标签: django authentication controls

我正在开发一个Django Web应用程序,其中包含一套用于结构工程师的钢结构设计工具。将为每个设计工具提供输入的数据库表,并且每个表的每一行将对应于要“解决”的特定设计条件。用户可以单独或成组工作。每个用户都需要持续访问自己的工作,以便可以对设计进行改进,复制和调整,以便在方便时创建报告,通常在需要硬拷贝文档的项目结束时创建。然后,对于给定的设计项目,数据库内容必须在几个月甚至几年内测量的任意数量的会话中可用。

如果有一组用户,通常都与给定的设计办公室相关联,那么他们所有人都可以接受彼此的共同和相互访问的工作。该应用程序支持日常工程生产活动,而不是创新的知识产权工作,无论如何,内部隐私不是行业的常态。但是,这项工作绝对必须避免在团队之外窥探。理想情况下,每个小组都有一个或多个授权监督该小组成员的超级用户。可能他们需要的主要工具是能够从组中删除成员,中断他的访问权限。这将是用户组超级用户,并且不会与站点端的超级用户相同。

为便于访问,每个数据库表的每一行都将与项目编号/项目名称对相关联,这对于部署用户或用户组的给定公司而言是唯一的。另一家公司可以轻松选择使用重复的项目编号,甚至可以选择一个重复的项目名称,因此可能必须在单独的相关“所有权列表中跟踪哪些数据库行属于给定用户(或组)” “每个用户(或组)的表格。

预计(希望)最终,与不同(通常是竞争)公司相关联的数百个用户(或用户组)将使用这些工具为数千个项目解决数万个设计条件。

所以,这是我的问题:

首先,尝试从Django contrib.auth代码中挽救大部分内容是否有任何意义?正如我所认为的那样,contrib.auth专为认证和访问控制而设计,适用于博客圈和网络新闻,但不支持对“内容”访问的细粒度控制。

其次,是否有可用于此问题的可用模板,模式,示例,策略或设计建议?

1 个答案:

答案 0 :(得分:4)