web2py中的登录后重定向

时间:2011-12-02 16:15:19

标签: web2py

我无法控制web2py中的登录后重定向行为。

根据this,web2py以不同方式处理登录后重定向,具体取决于登录是由系统启动(例如,在访问受版权保护的功能时)还是由用户启动(单击“登录时” '链接)。在前一种情况下,行为是在登录后重定向到引用页面,如预期的那样。但是,在后者中,用户在登录后被重定向到索引页面,或者被重定向到auth.settings.login_next中的硬编码页面。

如何设置,以便登录后重定向始终返回引用页面,无论登录是如何启动的?

1 个答案:

答案 0 :(得分:5)

您可以更改“登录”链接,以便它们始终包含当前URL作为查询字符串中_next变量的值。例如,无论您在何处创建登录链接,请按以下方式对其进行定义:

A('Login', _href=URL('default', 'user', args='login',
    vars=dict(_next=URL(args=request.args, vars=request.vars))))

这会将当前页面的URL(包括任何args和vars)添加到登录链接的查询字符串中的_next变量,这将导致在登录后重定向回当前页面。

如果您使用auth.navbar()帮助程序生成登录链接,则已解决此问题的主干已有更改(将很快发布)。新auth.navbar()会自动将_next变量添加到所有链接,因此在点击任何导航栏链接后,用户将重定向回原始页面。在此期间,您可以按如下方式修改auth.navbar()

import urllib
navbar = auth.navbar()
if not auth.is_logged_in and request.args(0) != 'login':
    navbar[1]['_href'] += '?_next=' +\
        urllib.quote(URL(args=request.args, vars=request.vars))