Plone 为什么brain.getObject()是未经授权的?

Plone 为什么brain.getObject()是未经授权的?,plone,zope,Plone,Zope,我以为它应该一个也不回 但它似乎打破了以下习惯用法: results = [x.getObject() for x in catalog(...) if x.getObject() ] 这是最近的更改吗?请参阅调用目录(…)应注意安全性,因为CMFPlone目录工具总是添加AllowedRoleAndUsers索引进行搜索。我很确定,如果对象的父对象不可访问,也会发生这种情况。因为CatalogTool的getObject做了一个受限的旅行。好吧,这就是我的假设,是的。即使CatalogBra

我以为它应该一个也不回

但它似乎打破了以下习惯用法:

results = [x.getObject() for x in catalog(...) if x.getObject() ]

这是最近的更改吗?

请参阅调用
目录(…)
应注意安全性,因为CMFPlone目录工具总是添加
AllowedRoleAndUsers
索引进行搜索。我很确定,如果对象的父对象不可访问,也会发生这种情况。因为CatalogTool的getObject做了一个受限的旅行。好吧,这就是我的假设,是的。即使CatalogBrains.py中getObject的docstring表示不同的内容。最后,它执行一个restrictedTraverse.getObject实际上执行一个到其父级的unrestrictedTraverse,并从那里执行一个到项目的restrictedTraverse。所以它应该会起作用。你也可以试试brain.\u unrestrictedgeObject()。这可能不安全,但至少看看这是否有效可能会有所帮助。