2016-06-15 4 views
2

Мы поддерживаем сайт Plone 4 и имеем специальное представление о папке «foo», которая доступна только для аутентифицированных пользователей со специальными ролями. Аутентифицированные пользователи могут получить доступ мнение так:Plone: ​​Как включить перенаправление к форме входа для определенного вида для анонимного пользователя?

http://<host>:<port>/Plone/foo/@@special-view 

Однако, если анонимный пользователь пытается получить доступ к окну, Unauthorized исключение:

Unauthorized: Your user account does not have the required permission. 
Access to 'macros' of (FSPageTemplate at /Plone/foo/main_template) denied. 
Your user account, Anonymous User, exists at (unknown). Access requires 
View_Permission, granted to the following roles: ['Extern', 'Manager', 
'Member', 'Site Administrator']. Your roles in this context are 
['Anonymous']. 
> /home/ted/work/ps/eggs/AccessControl-2.13.13-py2.7-linux-x86_64.egg/ 
AccessControl/ImplPython.py(797)raiseVerbose()-> raise Unauthorized(text) 

Определение действия в profiles/default/types/foo.xml выглядит это:

<action title="Special View" action_id="special-view" category="object" condition_expr="" 
    url_expr="string:${object_url}/special-view" visible="True"> 
    <permission value="Modify portal content" /> 
</action> 

Как мы можем добиться того, что анонимные пользователи получают перенаправлены на страницу входа в систему и аф ter login перенаправлен на URL, к которому они изначально хотели получить доступ?

Интересно, что это уже работает для объектов контента, которые находятся в папке «foo», но не для самой папки, а не для нашего специального вида.

Для этих объектов пользователь перенаправляется на этот URL, который будет показывать форму входа и перенаправляют к запрошенной странице после входа в систему:

http://<host>:<port>/Plone/acl_users/credentials_cookie_auth/require_login?came_from=http%3A//<host>%3A<port>/Plone/foo/@@special-view 

Debugging показал нам, что PAS вызов производится в этих случаях, но мы не знаем, как включить эту функцию для нашего специального вида.

UPDATE 2016-06-23

Я добавил это <browser:page определение configure.zcml, но это ничего не меняет:

<browser:page 
     name="new-members" 
     for="cnrd.vctypes.interfaces.ICnrdMemberFolder" 
     class=".behaviors.cnrd_member_folder.ShowNewMembers" 
     permission="cmf.ModifyPortalContent" 
    /> 
+0

Можете ли вы дать нам соответствующее объявление '

+0

В нашем' configure.zcml' нет декларации '

+0

Действие-разрешение просто определяет, предоставляется ли кнопка действия пользователю в пользовательском интерфейсе, это должно быть хорошо. Интересно, что вы получаете ошибку в папке, но не на ее дочерних элементах, проверяете разрешения своего wf-состояния и локальных ролей (через общий вклад), если они предоставляют view-perms для anon. Чтобы перенаправить перенаправление, см. Http://stackoverflow.com/questions/1222880/an-easy-way-to-redirect-certain-roles-in-zope/1226761#1226761 –

ответ

0

Чтения сообщения об ошибке внимательно, это выглядит, как вы» re вызов макроса, находящегося в папке скинов, на основе браузера. Документы дают намек на причины и как вы можете позволить ошибки грациозно потерпеть неудачу, здесь: http://docs.plone.org/develop/plone/security/permissions.html?highlight=unauthorized#catching-unauthorized

Или попробуйте извлечь ошибки метания переменного с другой («Oldskool» -) метода, которые не спрашивают для разрешений ZOPE-admin, даже до получения формы входа в систему.

Другая (моя предпочтительная) возможность заключается в обмене скин-шаблоном с шаблоном-браузером, как описано в «Представлениях» -глайка документов, а также пример для иллюстративных целей (отказ от одного из моих неопубликованные дополнения): https://github.com/ida/adi.forumail/tree/master/adi/forumail/browser/resources

 Смежные вопросы

  • Нет связанных вопросов^_^