python - 为什么不每次 Flask 启动时生成 key ?

标签 python session flask session-cookies

使用 session 时,Flask 需要 key 。在我见过的每个示例中, key 都是以某种方式生成的,然后存储在源代码或配置文件中。

永久存储它的原因是什么?为什么不简单地在应用程序启动时生成它?

app.secret_key = os.urandom(50)

最佳答案

key 用于签署 session cookie。如果您必须重新启动应用程序并重新生成 key ,则所有现有 session 都将失效。这可能不是您想要的(或者至少,不是使 session 无效的正确方法)。对于依赖 key 的其他任何东西都可以采用类似的情况,例如由 itsdangerous 生成的 token 以提供重置密码 url(例如)。

应用程序可能需要重新启动,因为崩溃,服务器重新启动,或者因为您正在推送错误修复或新功能,或者因为您使用的服务器产生新进程等。所以您可以'不要依赖服务器永远启动。

标准做法是向 repo 提交一些一次性 key (以便开发机器有 something),然后在部署时在本地配置中设置 key 。这样, key 就不会泄露,也不需要重新生成。

还有运行依赖于应用程序上下文的辅助系统的情况,例如用于运行后台任务的 Celery,或应用程序的多个负载平衡实例。如果应用程序的每个运行实例具有不同的设置,在某些情况下它们可能无法正常协同工作。

关于python - 为什么不每次 Flask 启动时生成 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27287391/

相关文章:

ASP.Net session 间事件

python - Heroku 应用程序在本地运行但出现 H12 超时错误(使用包)

php - 无法在 codeigniter 中销毁 session

python - 如何在 celery 任务执行时停止它并在一段时间后继续执行?

asp.net-mvc - asp.net mvc 在 Controller 构建过程中的任何时候都可以使用 session 吗?

javascript - 将变量从 Flask HTML 模板传递到 JavaScript 文件以供使用

javascript - Python Flask 页面无法使用外部 CSS 和 Javascript 呈现

python - 为什么 flask 只在 app.debug = True 时记录日志?

python2.5说未找到平台相关库

python - Pandas 对列进行排序并查找差异