回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有5种类型的用户:</p>
<ol>
<li>管理员(权限全部)</li>
<li>创建者(权限“v”、“a”、“m”、“c”)</li>
<li>经理(权限“v”、“a”、“m”)</li>
<li>分析员(权限“v”、“a”)</li>
<li>查看器(权限“v”)</li>
</ol>
<p>这是一个层次结构设置,每个用户都有前面每个用户的权限。要在我的项目中设置此功能,我可以轻松地编写:</p>
<pre><code>class RootFactory(object):
__acl__ = [
(Allow, '__ADMIN__', ALL_PERMISSIONS),
(Allow, 'creator', ('VIEWER', 'ANALYST', 'MANAGER', 'CREATOR')),
(Allow, 'manager', ('VIEWER', 'ANALYST', 'MANAGER')),
(Allow, 'analyst', ('VIEWER', 'ANALYST')),
(Allow, 'viewer', ('VIEWER')),
(Allow, Everyone, NO_PERMISSION_REQUIRED)
]
def __init__(self, request):
self.request = request
</code></pre>
<p>然后,在我的视图.py,例如,我会:</p>
^{pr2}$
<p>这对大多数<em>实例都很有效。但是,我不确定如何最好地完成以下任务:</p>
<ul>
<li><p>如何通过允许user1(一个查看器)根据需要拥有某些更高的权限,使这种访问控制更“细粒度”?这属于“对象级”安全范畴吗?在大多数情况下,全局根工厂就足够了,但是我如何适应低层用户被授予更高权限,或者高级用户被拒绝了较低权限的情况?</p></li>
<li><p>有没有一种方法可以方便地确定特定用户的原则,以便在我看来,我可以说一些影响:<code>if user.principle in list_of_permissions: do something...</code>?或者,这仅仅是来自存储用户组的数据库的另一个查询?</p></li>
</ul>
<p>我的目标是建立一个灵活的、分层的权限系统。最有效的方法是什么?我只读的教程介绍了更简单的全局策略(我确实理解这些策略)。我的问题之一是如何全面理解对象/实例级别的安全性。在</p>
<p>谢谢你的帮助。在</p>