2013-02-12 6 views
1

Мое приложение работает на Zope 2.12.19 и Python 2.6.5.Метаданные шаблона страницы Zope не читаются в продуктах

Файл с шаблоном страницы 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 файлами?

FYI - Я не использую 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> 
+0

Являются ли эти шаблоны страниц определенными на скине или используются с представлениями браузера (например, определенные в 'configure.zcml')? –

+0

Они используются с видами браузера. Например, list-users.pt, определенный в файле configure.zcml, обращается к файлу шаблона страницы. – Ravi

ответ

3

.metadata файлы только применяются к объектам кожи. Для представлений браузера, вам нужно указать разрешения в конфигурации ZCML взглядов:

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

можно указать разрешения; контекст определяет, какие роли имеют какие разрешения.

+0

@Ravi: Ответ является общим по назначению; Я отвечаю * почему * ваши файлы .metadata игнорируются и дают вам указатель на то, как разрешения обрабатываются для просмотров браузера. Это не подразумевается как готовый ответ для вашей конкретной ситуации. –

+0

@Ravi: точная конфигурация, необходимая для вашего приложения, будет более полезна; пожалуйста, попытайтесь понять это сами и вернитесь к SO, если у вас есть конкретные вопросы, которые помогут вам понять проблемы. –

+0

Это имеет смысл. Но можете ли вы сказать мне, почему применяются ограничения безопасности (я имею в виду, что файл '.metadata' читается), когда ZODB используется вместо того, чтобы быть основанной на файловой системе. 'Configure.zcml' также не включает в себя атрибут шаблона, и он предлагает пользователю войти в систему всякий раз, когда к продукту напрямую обращаются из браузера. – Ravi