麻煩我有5種類型的用戶:經與 「細粒」 金字塔ACL
- 聯繫 (權限ALL)
- 造物主 (權限 「V」 「一」, 「M」, 「C」)
- 經理 (權限 「v」, 「一個」, 「M」)
- 分析員 (權限 「V」, 「A」)
- 查看器 (權限 「V」)
這是每個用戶都有每個在前用戶的權限的分層設置。要在我的項目設置的,我可以很容易地寫:
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
然後,在我的views.py,例如,我做的:
@view_config(route_name='mgmt_handler', renderer='manage.jinja2', permission='MANAGER')
def mgmt_handler(request):
pass # do stuff
這很好地工作了最實例。但是,我不知道如何最好地完成以下任務:根據需要
如何讓我這個訪問控制更加「細粒」允許用戶1,a觀衆,會對一個特定的更高權限基礎?這是否屬於「對象級」安全領域?大多數情況下,全球根工廠就足夠了,但我如何適應那些低層用戶被授予更高權限,或者高層用戶被拒絕更低權限的情況?
有沒有一種方法可以方便地確定特定用戶的原理,以便在我看來我可以說一些效果如下:
if user.principle in list_of_permissions: do something...
?或者,這是否僅僅是數據庫中的另一個查詢,用戶的組存儲在該數據庫中?
案例和觀點,我的目標是要有一個靈活的,分級的權限系統。什麼是最有效的方法來做到這一點?我讀過的教程只解決了更簡單的全局策略(我明白這一點)。我的部分問題是如何全面瞭解對象/實例級別的安全性。
感謝您的幫助。