繁体   English   中英

Flask-Login login_manager.session_protection=strong 不会重定向到登录页面

[英]Flask-Login login_manager.session_protection=strong doesn't redirect to login page

我们正在使用flask-login 来处理我们网页的登录。 我们希望它对会话非常严格,因此当浏览器关闭时,会提示用户重新登录。

我们希望用户会被发送到每个 url 的登录页面,并且会话不会持续。

我们需要严格的保护

login_manager.session_protection = "strong"
login_manager.refresh_view = "users.login"

刷新视图用作文档状态:

刷新视图

The name of the view to redirect to when the user needs to reauthenticate

当用户关闭浏览器并开始新会话时,系统不会提示他们登录,而是会提供一个页面,其中 href 重定向到登录页面,其他链接会出现权限错误。 这不是最优的。

在内部,使用flask_login完成重定向的方式是使用login_manager.py文件中的login_manager.py unauthorized()函数,该函数使用request库来获取用户尝试访问的页面的请求url。 当用户注销尝试访问该页面时,它将正确获取正确的 url 并将用户重定向到分配给login_view设置的变量。 但是,当会话保护设置为strong并且用户退出应用程序并重定向到页面时, unauthorized()函数不会被执行。

那么为什么不将它们发送到每个新浏览器实例的登录页面呢?

在我们的例子中,用户仍然有一个记住我的 cookie 来持久化会话。 添加此行后

REMEMBER_COOKIE_DURATION = timedelta(minutes=0)

用户被正确发送到登录页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM