当一个人在 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()
orsecurity.declareObjectPrivate()
调用。
类安全信息被转换为发布者在检查权限时检查的类的属性__roles__
。__ac_permissions__
有关它们如何工作的详细信息,请参阅 Zope Secrets 书的安全章节。