Cookie和Session都是用来跟踪浏览器用户身份的会话方式
区别
Cookie
- 存放在客户端
- 一般保存用户信息
Session
- Session存放在服务端
- 安全性更高
使用Session-Cookie方案进行身份验证
- 用户发送登录信息
- 服务器验证通过,为用户创建一个
Session
,将Session
存储 - 服务器向用户返回
SessionID
,写入用户的Cookie
- 用户保持登录状态时,
Cookie
将与每个后续请求一起发送 - 服务器将存储在
Cookie
上的SessionID
与内存中或数据库中的Session
比对,验证身份
注意
- 一定要确保客户端开启了
Cookie
- 注意
Session
的过期时间
多服务器节点下Session-Cookie
可能会有用户两次访问导向到不同服务器,以至于Session失效
常见解决方案
- 通过哈希策略分配
- 服务器间的Session互相同步(节点越多成本越高)
- 使用一个所有服务器都能访问到的数据节点(缓存)存放Session
- Spring Session