Flask 不会自动重定向到登录页面

Flask not automatically redirecting to the signin page

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

Redirecting...

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

问题是它实际上并没有重定向,我每次都必须点击 auth/sign_in link - 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 在重定向时自动 returns 一个 301 的原因。因此,如果您 return 出现 401(未经授权)错误,您的浏览器将无法重定向。 return 301 或留空。

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

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

应该可以。