1

当一个人在 ZCML 中注册一个视图时,例如:

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

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

4

1 回答 1

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()orsecurity.declareObjectPrivate()调用。

类安全信息被转换为发布者在检查权限时检查的类的属性__roles____ac_permissions__有关它们如何工作的详细信息,请参阅 Zope Secrets 书的安全章节

于 2013-05-08T11:45:12.377 回答