我无法控制web2py中的登录后重定向行为。web2py中的登录后重定向
根据this,web2py根据登录是由系统启动(例如访问auth保护功能时)还是用户(点击“登录”链接时),以不同的方式处理登录后重定向。 。在前一种情况下,如预期的那样,行为是在登录后重定向到引用页面。然而,在后者中,用户在登录后重定向到索引页面,或者转到auth.settings.login_next中硬编码的页面。
我该如何进行设置,以便登录后重定向总是将您返回到引用页面,而不管登录是如何启动的?
我无法控制web2py中的登录后重定向行为。web2py中的登录后重定向
根据this,web2py根据登录是由系统启动(例如访问auth保护功能时)还是用户(点击“登录”链接时),以不同的方式处理登录后重定向。 。在前一种情况下,如预期的那样,行为是在登录后重定向到引用页面。然而,在后者中,用户在登录后重定向到索引页面,或者转到auth.settings.login_next中硬编码的页面。
我该如何进行设置,以便登录后重定向总是将您返回到引用页面,而不管登录是如何启动的?
您可以更改您的“登录”链接,以便始终在查询字符串中包含当前网址作为_next
变量的值。例如,无论你创建一个登录链接,其定义是这样的:
A('Login', _href=URL('default', 'user', args='login',
vars=dict(_next=URL(args=request.args, vars=request.vars))))
这将在登录链接的查询字符串当前页面(包括任何ARGS和VAR)的网址添加到_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))
@ Anthony-非常感谢,这个工程。是的,我绝对认为这应该是在任何情况下的默认行为。当前不一致的行为是混淆和无证的。 – Yarin
如果我把它放在usersDatatabe的模型中,我得到以下错误AttributeError:'NoneType'对象没有属性'fields' – Yebach
找到了解决方案。 auth.settings.logout_next正在工作,但我的网址不正确或不完整,所以我被重定向到默认/索引页面 – Yebach