3

我想在用户注销后设置一个 plone 网站以重定向到 url 中的 come_from 参数。对于我设置的登录string:${globals_view/navigationRootUrl}/login?came_from=${context/absolute_url},它正在工作。

对于注销,这不起作用。我也尝试了它的事件:

  <subscriber
    for="Products.PlonePAS.events.UserLoggedOutEvent"
    handler="blabla.goCameFromAfterLogout"
    />

使用:

def goCameFromAfterLogout(event):
    """ Redirects user to came_from url parameter after logout
    """
    import pdb; pdb.set_trace( )
    request = event.object.REQUEST
    came_from = request.form.get('came_from', None)
    if came_from:
        response = request.RESPONSE
        response.redirect(came_from)

事件没问题, came_from 参数没问题,但代码没有按我想要的方式工作。该网站/logged_out每次都将我重定向到。

那么,我该如何设置呢?

4

3 回答 3

6

一种简单的方法:自定义logged_out,将其转换为 Python 脚本,重定向到您想要的任何页面:

context.REQUEST.RESPONSE.redirect(url)
于 2015-05-08T12:24:12.623 回答
3

您还可以在事件处理程序中引发重定向异常

from zExceptions import Redirect

def goCameFromAfterLogout(event):
""" Redirects user to came_from url parameter after logout
"""
request = event.object.REQUEST
came_from = request.form.get('came_from', None)
if came_from:
    raise Redirect(came_from)
于 2015-08-18T06:15:53.120 回答
1

?next=url代替 come_from 也是一个好主意。

于 2016-02-24T14:40:39.947 回答