flask - Flask 的 SessionInterface 中的 get_cookie_name 之类的东西?
问题描述
我需要根据用户在我的 Flask 应用程序中访问的 url 的子路径使用不同的会话
例如,我希望访问 www.example.com 的用户具有基于名为“root_cookie”的 cookie 的会话,但访问 www.example.com/subpath 的用户应该具有基于名为“subpath_cookie”的 cookie 的会话
对我来说,这主要与 Flask-Login 以及我希望如何根据用户登录的子路径进行不同的独立登录会话有关。
现在,Flask 的session_interface
属性允许你设置一个自定义类,你可以从SessionInterface
. 您可以覆盖几乎所有内容,SessionInterface
包括 cookie 的域 ( get_cookie_domain()
) 和 cookie 的路径 (get_cookie_path()
。
对我来说缺少的一件事是一个可以命名的函数,get_cookie_name()
由于上述原因,这将有助于覆盖。
我意识到也许我可以覆盖get_cookie_path()
为每个子路径设置不同的 cookie。问题出现在根 URL 中。如果我将 cookie 的路径设置为“/”,它也会在子路径中生效,包括我想要使用不同会话的子路径。因此,如果它是根 url,则设置一个不同的 cookie 名称可以解决问题。但我不能,因为get_cookie_name()
不存在。
Flask 中是否有任何我缺少的机制可以帮助解决这个问题?
解决方案
save_session()
在对必须重写来解决我的问题感到不满意之后,我提交了一个拉取请求以在 Flask 项目中创建一个get_cookie_name()
方法,该方法已合并到主分支中。从 Flask 版本 2.0.0 起,将能够按照文档使用此新功能:https ://flask.palletsprojects.com/en/master/api/#flask.sessions.SessionInterface.get_cookie_name
推荐阅读
- laravel-5 - 获取匹配过滤器的记录数 Laravel 分页
- kotlin - 具有超过 3 个 Observable 的 Kotlin 中的 combineLatest 方法:在实现该方法时出错
- multithreading - 我们可以在高流量的多线程环境中使用多个 Kafka 生产者吗?
- django - 具有 LDAP 支持且无用户模型的基本身份验证的 Django 身份验证
- apache-pig - 通过在 PIG 脚本中不同块内计算的条件值过滤 FOREACH 块内
- google-cloud-platform - GC ImageMagick Trim 最大宽度和高度
- css - 如何在git中处理scss和css?
- docker - Docker 中的主管不起作用
- gulp - 在多个文件夹上运行一个 gulp 任务。文件夹看起来像 plugins/lsmwp-*
- c# - Windows 模板工作室 - UWP - 导航到 Uri