【发布时间】:2021-08-24 06:40:55
【问题描述】:
我正在学习 Flask 中的会话以及它说的文档:
“除了默认的基于客户端的会话,如果你想在服务器端处理会话,有几个 Flask 扩展支持这个。”
https://flask.palletsprojects.com/en/2.0.x/quickstart/#sessions
基于客户端的会话和服务器端有什么区别?
【问题讨论】:
标签: python python-3.x flask session
我正在学习 Flask 中的会话以及它说的文档:
“除了默认的基于客户端的会话,如果你想在服务器端处理会话,有几个 Flask 扩展支持这个。”
https://flask.palletsprojects.com/en/2.0.x/quickstart/#sessions
基于客户端的会话和服务器端有什么区别?
【问题讨论】:
标签: python python-3.x flask session
除了
request对象之外,还有另一个名为session的对象,它允许您存储从一个请求到下一个请求的特定于用户的信息。这是在 cookie 之上为您实现的,并以加密方式对 cookie 进行签名。这意味着用户可以查看您的 cookie 的内容但不能修改它,除非他们知道用于签名的密钥。
因此,信息以物理方式存储在 cookie 中,例如username=john 是存储在 cookie 中的值。那是一个“客户端会话”。如上所述,问题在于用户可以看到该数据,如果您想在会话中存储 secret 数据,这是不好的。如果需要,您需要服务器端会话,其中数据实际上存储在服务器端,客户端看到的只是一些随机无意义的会话 ID。会话 ID 存储在 cookie 中,服务器根据该 ID 在某个数据库中的某处查找实际会话数据。
客户端会话的优势在于服务器完全无状态,即它本身不需要存储任何数据。这意味着它不需要进行任何数据库查找来获取数据,并且您可以(例如)并行运行多个独立服务器,而无需担心共享会话存储,这对可扩展性非常有用。
服务器端会话的优点是您可以存储更多数据,因为它不需要在每个请求中来回发送,并且数据对用户不可见。
【讨论】: