引用一下自己在之前帖子里的回复:
https://www.v2ex.com/t/520410这就体现出了很多人混淆 session / session-data / session-id / cookies 的情况了。
不少人因为 cookies 里存储了一个叫做 session 的变量,就粗暴的认为这是 session 的本体了。
我倾向于把东西划分为 session 和 session-data 来解释:
session 是个虚拟概念,代表了一个虚拟的会话过程
session-data 是个实体概念,代表这个会话中的独享数据(例如登录状态、用户信息等)
在大部分实现中( flask 除外),cookies 里存储的只是 session-id,只是一个索引 id 而已,就一串字符 id 而已。
真正的 session-data,其实是存储在服务端程序中的,服务端程序,根据 session-id,取出了 session-data 参与运算渲染。
于是在外界看来,就好像这个 session 是通过 cookies 里的 session-id 来维持的一样。
这就造成了许多人 “ session 是存储在 cookies 中” 的误解。
同时也造成了,在讨论 session 的时候,很多人混淆 session 会话 / session-data / session-id 的情况。
当然,刚才被我排除掉的 flask,人家是真的把 session-data 存储在 cookies 中的(即 “客户端 session ”),所以在使用 flask 的时候,要处理好 secret_key 的安全性,否则容易出现 伪造 session 的问题,另外就是 flask 只对 session 做了签名,没做校验,所以本地 session 是可以被解码查看的。当然那就是另一个话题了,不多说。