1

我的应用程序在 Zope 2.12.19 和 Python 2.6.5 上运行。

有一个页面模板文件,文件pagetemplate.pt中定义了访问限制pagetemplate.pt.metadata。这些访问限制适用于除 Zope 产品中的网页之外的所有网页并正常工作。

.metadata文件的内容如下:

[default]
title=

[security]
View=0:Authenticated,Manager,Owner,User
Access contents information=0:Authenticated,Manager,Owner,User

例如,有一个 Zope 产品列出了系统中的所有用户,它使用了上面的页面模板。用户无需登录即可匿名访问此页面,这意味着未读取元数据文件。

.metadata但是要访问 Products 之外的任何其他页面,应用程序会强制用户登录。 Products 读取文件是否有问题?

仅供参考 - 我不使用 ZODB ......相反,所有内容(源代码)都在文件系统上。

的内容configure.zcml如下。

<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:five="http://namespaces.zope.org/five"
    xmlns:browser="http://namespaces.zope.org/browser"
    i18n_domain="AMSPermissions">

    <!-- the users manage page -->
    <browser:page
    for="OFS.interfaces.IFolder"
    name="manage-users"
    template="standard_template.pt"
    class=".users.UsersView"
    permission="zope2.View"
    />

    <!-- permissions checker -->
    <browser:page
    for="OFS.interfaces.IFolder"
    name="perm_check"
    class=".permissions.PermissionsCheckerView"
    permission="zope2.View"
    allowed_interface=".interfaces.IPermissionsCheckerView"
    />
</configure>.

此外,以下是产品的示例代码。

<html metal:use-macro="context/standard_template/macros/page">
  <metal:block fill-slot="heading">Users Overview</metal:block>
  <metal:block fill-slot="body" tal:define="users view/get_users">
     ---------Some code--------
  </metal:block>
</html>
4

1 回答 1

3

.metadata文件适用于皮肤对象。对于浏览器视图,您需要在视图的 ZCML 配置中指定权限:

<browser:page
    for="*"
    name="somepagename"
    template="pagetemplate.pt"
    permission="zope.View"
    />

您指定权限;上下文定义了哪些角色拥有哪些权限。

于 2013-02-12T20:49:26.663 回答