python - 具有多个服务器的 Flask-login 如何工作

标签 python flask flask-login

我一直在使用Flask login module ,它在服务器上创建和维护 session 。

既然server维护了session,我觉得也不是完全无状态的。当应用程序有多个服务器时它是如何工作的。请求是否应该是粘性的(即给定 session 应该向特定服务器发出后续请求)?

最佳答案

您所做的陈述并不完全正确:

... which creates and maintains session on the server.

Flask-Login使用了Flask提供的session设施,所以它存储在session中的数据将由Flask使用配置的session存储机制写入。

默认情况下,Flask 在客户端将用户 session 写为安全 cookie,但也可以在服务器端进行 session 。比如这个snippet展示了如何配置 Flask 以在服务器端 Redis 存储上写入 session 。

当用户 session 存储在客户端 cookie 中时,很明显拥有多个服务器不是问题。 cookie 将被发送到处理每个请求的服务器,因此一切都会正常工作。

对于服务器端 session ,这也适用。服务器端 session 在唯一标识符下编写,然后将此唯一标识符存储在客户端 cookie 中。然后每个请求都带有 session ID,Flask 使用此 ID 加载 session 数据。如果您将所有 Web 服务器配置为使用相同的用户 session 存储,那么多个服务器可以毫无问题地处理来自同一客户端的请求。

关于python - 具有多个服务器的 Flask-login 如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19083705/

相关文章:

python - 使用 pickle 保存修改后的列表时出现问题

python - 属性错误: '_Screen' object has no attribute 'mainloop'

python - 覆盖 Flask-Security 的/登录端点

python - 在 Flask 中获取当前用户 ID

python - Flask-Login 中使用的 "is_authenticated"方法有什么意义?

python - python中的StringIO在现实中是做什么用的?

python - 根据另一个列表有效地调整 python 列表

python - 我如何确保 flask 应用程序已在所有路线上获得授权?

python - WebSockets 和 WSGI 通过 Gunicorn 结合在一起

flask-restful - 在 REST API 中一起使用 flask_login 和 flask-JWT