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