http://developer.plone.org/reference_manuals/external/plone.app.dexterity/advanced/permissions.html
在文档中,我看到了这个,
注意 所有权限都需要在configure.zcml 行之前定义。否则,您可能会在尝试使用 grok.require() 指令的权限时遇到错误。该
permissions.zcml
文件如下所示:<configure xmlns="http://namespaces.zope.org/zope" i18n_domain="example.conference"> <permission id="example.conference.AddSession" title="example.conference: Add session" /> <permission id="example.conference.ModifyTrack" title="example.conference: Modify track" /> </configure>
新权限仅默认授予 Manager 角色。要设置不同的默认值,我们可以使用 rolemap.xml GenericSetup 导入步骤,它将权限映射到站点根目录的角色。
在
profiles/default/rolemap.xml
中,我们有以下内容:<?xml version="1.0"?> <rolemap> <permissions> <permission name="example.conference: Add session" acquire="True"> <role name="Owner"/> <role name="Manager"/> <role name="Member"/> <role name="Contributor"/> </permission> <permission name="example.conference: Modify track" acquire="True"> <role name="Manager"/> <role name="Reviewer"/> </permission> </permissions> </rolemap>
注意此文件使用 Zope 2 权限标题而不是较短的 Zope 3 权限 ID。”
Plone's Dexterity 可以编程为使用数据库吗?如果我有成千上万的用户怎么办?当我已经在 Active Directory 或 MySQL 数据库中拥有它时,有很多 xml 文件需要跟上。我想根据它们的安全性来阻止显示按钮和其他网页项目。灵巧似乎可以做到这一点。
谢谢。
编辑:感谢您消除我在用户和角色之间的混淆,因为用户保存在像 LDAP 服务器这样的存储库中。
我是否正确,在我设置了我的角色和用户之后,我所要做的就是包装我的 html(在定义如下 Python 代码之后):
“例如,如果用户具有 cmf.RequestReview 权限,让我们在 Session 类型的视图上显示一条消息。在 session.py 中,我们使用以下(同一页面)更新 View 类,
from zope.security import checkPermission
class View(dexterity.DisplayForm):
grok.context(ISession)
grok.require('zope2.View')
def canRequestReview(self):
return checkPermission('cmf.RequestReview', self.context)
在 session_templates/view.pt 模板中,我们添加:
<div class="discreet"
tal:condition="view/canRequestReview"
i18n:translate="suggest_review">
Please submit this for review.
</div>
"