会话控制
用户登录从技术上讲是叫会话控制。
HTTP 是无状态的 ,要保证会话控制,需要利用 Cookie 来做。
两种方式:
- 不带后端存储
- 带后端存储
全 Cookie 会话
不带后端存储的就是将会话数据存储于 Cookie 中。数据是加密过的,且一般设置 Cookie 时使用 HttpOnly 标示来防止 JS 读取。传输到服务端的时候,再重新解密。
好处 :
- 多服务器时不需要配置,原生支持,因为数据都存储在客户端的 Cookie 中,只需要保证加密解密的钥匙是一样的即可。
有利就有弊 :
-
依赖于 HTTP Cookie 有数据大小限制,Cookie 的总大小不能超过 4KB,使用时要注意不能往会话里写入太多数据。
-
会话数据存放在客户端,在用户访问服务器之前,我们无法对这些会话数据进行修改和管理 (例如说因为特殊情况需要重置所有会话,通俗讲就是让所有用户重新登录)
带存储的会话
带后端存储的会话控制,也同样使用 Cookie,不过只保存会话 ID,所有数据都放于存储器中。
常见的存储介质有:
- 文件
- MySQL
- Memcache
- Redis
- 等
好处 :
- 存储更多的会话数据
有利就有弊 :
- 多机器部署时,需要注意使用同一个会话存储,以免造成混乱,多机部署的问题使用专业会话存储工具,如 Memcache 或者 Redis 很容易解决。