Flask无法自动重定向到登录页面

问题描述

会话过期并且用户尝试访问未经授权的页面时,会出现以下消息(正确):

Redirecting...

You should be redirected automatically to target URL: /auth/sign_in. If not click the link.

问题是它实际上并没有重定向,我每次都必须单击auth / sign_in链接-Flask不会自动重定向我,仅显示页面。我已经在Chrome和Firefox中测试了相同的问题。我搜索了两次堆栈溢出,但只能找到有关修复烧瓶重定向的建议,而不是此特定问题。

这是我的login_manager.unauthorized_handler。

@login_manager.unauthorized_handler
def unauthorized():
    flash("Please sign in to access",'red')
    return redirect(url_for("auth.sign_in")),401

请让我知道是否还有其他有助于回答问题的信息。

解决方法

浏览器使用301(永久移动)错误重定向到其他页面。这就是为什么Flask重定向时会自动返回301的原因。因此,如果您返回401(未经授权)错误,则您的浏览器将无法重定向。 返回301或将其留空。

return redirect(url_for("auth.sign_in")),301

return redirect(url_for("auth.sign_in"))

应该工作。