使用 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/