首页 > 解决方案 > 登录 Tornado 后如何重定向到原始 url

问题描述

如果我打开一个需要登录才能访问的 url,登录完成后我希望被重定向到原始 url。我怎样才能在 Tornado 中实现这一点?我在 Google 中搜索,但没有找到任何有用的信息。我使用了以下代码,但它不起作用。

def LoginHandler(RequestHandler):
    if not self.current_user:
        self.render("login.html")
    else:
        self.redirect(self.request.headers["Referer"])

我使用了 Google 开发者工具,发现当 url 被重定向到登录页面时,请求标头中不存在“Referer”字段。

标签: pythontornadourl-redirection

解决方案


如果您在@web.authenticated处理程序上要求登录,它会将用户重定向到next参数中包含当前 url 的登录页面。

例如,如果您请求/protected/page,并且如果您没有登录,您将被重定向到具有此 url - 的登录页面/login?next=/protected/page

在您的登录处理程序中检查next参数并重定向。

self.redirect(self.get_query_argument('next', '/default/url/if/next/is/empty'))

推荐阅读