如何设置 Plone 在注销后重定向到 came_from
How to set Plone to redirect to came_from after logout
我想设置一个 plone 网站在用户注销后重定向到 url 中的 came_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
。
那么,我该如何设置呢?
一个简单的方法:自定义 logged_out
,将其转换为 Python 脚本,重定向到您想要的任何页面:
context.REQUEST.RESPONSE.redirect(url)
您还可以在事件处理程序中引发重定向异常
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)
用 ?next=url
代替 came_from 也是个好主意。
我想设置一个 plone 网站在用户注销后重定向到 url 中的 came_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
。
那么,我该如何设置呢?
一个简单的方法:自定义 logged_out
,将其转换为 Python 脚本,重定向到您想要的任何页面:
context.REQUEST.RESPONSE.redirect(url)
您还可以在事件处理程序中引发重定向异常
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)
用 ?next=url
代替 came_from 也是个好主意。