Ros*_*ter 5 python mongodb flask
我正在创建一个 Flask 应用程序,它要求每个请求使用用户传递给应用程序的一些数据来初始化他们的会话。一旦他们传递了这些数据并初始化了会话,我想一遍又一遍地重用这些数据,直到他们的会话完成来填充请求,而不必为每个请求传递数据。
我似乎无法找出最好的方法来做到这一点。将它存储在会话变量中是行不通的,因为该数据只是被发送回用户,然后它与每次请求都传递它相同。将数据存储在数据库中似乎不是正确的选择,因为我需要在会话结束时将其丢弃,而且我没有看到任何装饰器可以在会话到期时实现......所以我担心我的数据库最终会填满来自初始化的所有这些数据,并且无法保证在会话结束时删除它们。
有什么建议?
您在这里有两个选择:存储在客户端上的会话,或存储在服务器上的会话。
要将其存储在服务器上,您需要一个数据存储。如果您的应用程序必须扩展到任何程度(包括多个 uwsgi 工作人员),您将不得不使用分布式存储。如果你有redis,那将是最好的选择。请参阅 Simon Fraser 在评论中发布的 Flask-Session 示例来执行此操作。它将处理在您的数据库中存储会话对象并在需要时从中获取值。它也处理大量后端,因此您拥有的任何数据库都可能开箱即用。
如果您不想使用后端会话,则必须使用客户端会话。这是通过设置 cookie 来完成的 - cookie 会自动附加到浏览器发送到您网站的大多数请求中,因此您存储在 cookie 上的值通常会返回给您。(这就是 facebook 无需您在每个页面上都登录即可记住您的方式。事实上,这就是 Flask-Session 跟踪要恢复的会话的方式!)。为了使其可靠,您必须对 cookie 进行签名,以便用户无法修改值 - Flask 可以使用内置的Session,也可以作为描述使用更好的密码库在这里为您处理此问题。如果您不希望用户能够看到这些值,或者您有大量数据要存储(cookie 的最大大小是有限的),您将不得不使用所有这些的服务器端版本.
| 归档时间: |
|
| 查看次数: |
9846 次 |
| 最近记录: |