存储方式
- cookie,
- localStorage,
- sessionStorage,
- indexDB
优缺点
cookie
数据生命周期: 一般由服务器生成,可以设置过期时间数据存储大小: 4K与服务端通信: 每次都会携带在 header 中,对于请求性能影响
localStorage
数据生命周期: 除非被清理,否则一直存在数据存储大小: 5M与服务端通信: 不参与
indexDB
数据生命周期: 除非被清理,否则一直存在数据存储大小: 无限与服务端通信: 不参与
sessionStorage
数据生命周期: 页面关闭就清理数据存储大小: 5M与服务端通信: 不参与
应用之登录
登录标识
- 用户登录之后,会返回一个用户的标识,
- 之后带上这个标识请求别的接口,就能识别出该用户。
- 标识登录状态的方案有两种: session 和 jwt。
session
session 的方案默认不支持分布式,因为是保存在一台服务器的内存的,另一台服务器没有。
- 服务端存储,通过 cookie 携带标识
- 登录标识存放在cookie中
- 每次请求cookie都会被携带上
cookie = {
sessionId: 1
}
- session 是通过 cookie 里的 sessionId,关联服务端内存里保存的 session 对象
- 请求时服务端取出 cookie 里 sessionId 对应的 session 对象,就可以拿到用户信息
session = [
{id: 1, username: 'jack', age: 22},
{id: 2, username: 'tom', age: 18},
]
JWT
jwt 的方案天然支持分布式,因为信息保存在 token 里,只要从中取出来就行。
- 全称: json web token
- token 就是将用户信息加密后得到的字符串
- 客户端存储,一般存放在
localstorage - 每次请求带上这个 token,服务端就能从中取出用户信息。
- 请求时放在一个叫 authorization 的 header 里。