2016-06-15 12 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でアクションの定義がどのように見えますこの:私たちは、匿名ユーザーがログインページとAFにリダイレクトすることを実現するにはどうすればよい

<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> 

最初にアクセスしたい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 

デバッグがPASのチャレンジがこれらの場合に行われることを私たちに示したが、特別な視点でこの機能を有効にする方法はわかりません。

UPDATE 2016年6月23日

私はconfigure.zcmlにこの<browser:page定義を追加しましたが、それは何も変更しませんでした:

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

'configure.zcml'の対応する'

+0

' configure.zcml'に '

+0

action-permissionは、アクションボタンがUI内のユーザーに提供されているかどうかを定義します。興味深いのは、フォルダにはエラーがありますが、子にはアクセスできないということです.won-stateとlocal-roles(共有タブを介して)のパーミッションを確認してください。リダイレクトを強制する場合は、次を参照してください:http://stackoverflow.com/questions/1222880/an-easy-way-to-redirect-certain-roles-in-zope/1226761#1226761 –

答えて

0

が密接にエラーメッセージを読んで、それはあなたのように見えますブラウザベースのビューのスキンフォルダにあるマクロを呼び出しています。 ドキュメントは、大義のためにヒントを与えるとどのようにエラーが優雅ここで、失敗させることができます: http://docs.plone.org/develop/plone/security/permissions.html?highlight=unauthorized#catching-unauthorized

あるいは、他とのエラー投げ変数取得しよう(「oldskoolを」 - )聞いていない方法で、ログインフォームに達する前であっても、ZOPE管理者のアクセス許可が必要です。

もう1つ(私の好み)の可能性は、ドキュメントの「ビュー」の章で説明しているように、スキンテンプレートをブラウザテンプレートと交換することです。ここでは説明のための例も示しています未公開のアドオン): https://github.com/ida/adi.forumail/tree/master/adi/forumail/browser/resources

関連する問題