2010-01-17 19 views
4

我开发与结构工程师一套钢制设计工具Django的Web应用程序。每个设计工具都会有一个输入数据库表,每个表的每一行都将对应一个特定的设计条件以“解决”。用户可以单独或分组工作。每个用户都需要持续访问他自己的工作,以便可以对设计进行改进,复制和改编,并且可以在任何方便的时候创建报告,通常在项目结束时需要硬拷贝文档。然后,数据库内容必须能够在针对给定设计项目以数月或甚至数年计量的期间内发生的任意数量的会话中使用。Django的认证细粒度访问控制

当有一组用户,通常都与给定的设计办公室相关联,它可能会为他们所有可以接受的联合和相互访问对方的工作。该应用程序支持日常的工程生产活动,而不是创新的知识产权工作,而且内部隐私在行业中不是常见的。但是,这项工作绝对不能被群体之外的人撬动。理想情况下,每个小组将有一个或多个超级用户被授权监督小组成员。他们可能需要的主要工具可能是从组中删除一个成员,中止他的访问权限。这将是一个用户组超级用户,并且不会与站点一侧的超级用户相同。

为便于访问,每个数据库表的每一行都会有项目编号/项目名称对,这将是一个给定公司部署用户或用户组唯一关联。不同的公司可以很容易地选择使用重复的项目数,甚至还可以选择重复的项目名称,以便区分到底哪些数据库行属于一个给定的用户(或组)可能会在一个单独的有关“所有权名单进行跟踪“每个用户(或组)的表格。 (希望)最终,与不同(通常是竞争对手)公司关联的数百个用户(或用户组)将为数千个使用这些工具的项目解决数万个设计条件。

所以,这里是我的问题:

首先,有没有试图挽救更多的事情,从Django的contrib.auth代码的任何一点?当我察觉到它,contrib.auth是专为认证和访问控制是适合于博客和网络新闻,但不支持访问进行细粒度控制“的内容。”

其次,有没有我可以适用于该问题的任何可用的模板,图案,例如,策略或设计的建议?

+0

这个项目听起来真棒。你必须在Django中做到这一点。后来如何? – 2014-07-23 09:55:04

+0

我的工作也是如此。你的第三段是问题:不管你对一个项目的定义是什么,你都应该为它使用一个关键数据来与它关联数据。永远不要依赖人的投入。对此的一个很好的测试是输入(例如项目名称)应该随时可以改变。然后你只是说这个项目(id = 12345abc)分配了这些组,并且这些组拥有这些用户。只允许具有该权限链的用户查看项目数据。 – 2014-07-23 11:51:16

回答

4
+0

伊格纳西奥,你的答案的简洁与我的问题的详细程度相比较!我发现* django-authority *的文档正处于开始阶段。 Python代码*中的处理权限部分尚未写入。我需要这个,因为我打算在大多数情况下自动应用权限。你是使用Django权威的专家吗?你愿意咨询小时费吗?我想我需要一名教练! – 2010-01-18 19:29:26

+0

我自己对此不太了解,但是我已经开发人员了。如果您愿意,您也可以尝试在文档中给出的支持选项。 http://packages.python.org/django-authority/support.html#support – 2010-01-18 21:45:50

+0

我在这里看到,http://docs.djangoproject.com/en/dev/topics/auth/,Django开发版本有一些对对象级(行级)权限的支持级别。我明白这将在2010年3月完成。 – 2010-01-26 07:46:23