如何在Plone中处理zope 3视图安全性

时间:2013-05-08 08:49:02

标签: plone zope

当在ZCML中注册视图时,如:

<browser:page
   for="*"
   name="reporter"
   class=".reporter.report_form_frame"
   permission="cmf.SetOwnPassword"
   />
  • 遍历堆栈Zope机器在哪一点检查此权限

  • 哪个组件会跟踪视图及其权限

1 个答案:

答案 0 :(得分:2)

browser:page处理程序设置视图类本身的权限。没有中心组件可以跟踪。

在Zope 2中,它被委托给AccessControl.security.protectClass()函数,这相当于在视图类中添加ClassSecurityInfo对象:

from AccessControl.SecurityInfo import ClassSecurityInfo

class report_form_name(BrowserView):
    security = ClassSecurityInfo()
    security.declareObjectProtected('cmf.SetOwnPassword')

或者,如果将视图设为公开(zope.Public)或私有(zope.Private),则会使用security.declareObjectPublic()security.declareObjectPrivate()来电。

类安全信息被转换为发布者在检查权限时检查的类的__roles____ac_permissions__属性。有关这些工作原理的详细信息,请参阅Zope Secrets一书的Security chapter