当在ZCML中注册视图时,如:
<browser:page
for="*"
name="reporter"
class=".reporter.report_form_frame"
permission="cmf.SetOwnPassword"
/>
遍历堆栈Zope机器在哪一点检查此权限
哪个组件会跟踪视图及其权限
答案 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。