現在のユーザーに応じて、マーカー インターフェイスをリクエストに適用しようとしています。アイデアは、ユーザーの好みに応じてさまざまなスキンを提供することです.
そこでミドルウェア的なフックを使ってみました。configure.zcml で:
<subscriber
for="Products.CMFCore.interfaces.ISiteRoot
zope.traversing.interfaces.IBeforeTraverseEvent"
handler=".layer.mark_layer"
/>
そしてlayer.pyで
def mark_layer(portal, event):
'''Conditional marking of the request according to the user
preferences.'''
request = event.request
portal_state = getMultiAdapter((portal, request), name="plone_portal_state")
anon = portal_state.anonymous()
print anon, portal.portal_membership.isAnonymousUser()
# more code here...
問題は、 plone が常にユーザーが匿名であると報告することです。
では、そのような状況では、どのようにマーカー インターフェイスを適用できますか?
前もって感謝します。