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



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

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

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

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一书中的安全性章节。

最新更新