session原理及优劣势
1.session工作原理
客户端通过用户名和密码请求服务端,服务端就会生成身份认证相关的session数据,比如用户、用户名等信息来生成一份session数据,会保存在内存里或内存数据库里,并将sessionId通过Set-cookie响应头返回给客户端, 客户端则会把sessionId存在cookie中。此后,客户端发起的所有请求都会带上该sessionId,服务单会通过该sessionId寻找session数据并解析,由此得知当前登录状态有没有登陆,以及有什么权限。
前端想重新验证退出登陆就可以,后端想重新验证修改下session就行。
2.session优势
- 相比JWT,最大优势是可以主动清除session。
- session保存在服务器端相对安全。
- 结合cookie使用,较为灵活,兼容性好
3.session劣势
- cookie+session在跨域场景很麻烦
- 如果是分布式部署,需要做多机共享session机制
- 基于cookie的机制容易被CSRF
- 查询session信息可能会有数据库查询操作,带来性能问题
4.session相关概念
(1)sessionStorage:客户端用于存储变量的,仅在当前会话下有效,关闭页面或浏览器后被清楚
(2)localStorage:除非被清除,否则永久保存