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的敏捷程序编程为使用数据库吗?如果我有数千名用户怎么办?当我在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>
“