实现储存的方式

116 阅读2分钟

存储方式

  • cookie,
  • localStorage,
  • sessionStorage,
  • indexDB

优缺点

cookie

  • 数据生命周期: 一般由服务器生成,可以设置过期时间
  • 数据存储大小: 4K
  • 与服务端通信: 每次都会携带在 header 中,对于请求性能影响

localStorage

  • 数据生命周期: 除非被清理,否则一直存在
  • 数据存储大小: 5M
  • 与服务端通信: 不参与

indexDB

  • 数据生命周期: 除非被清理,否则一直存在
  • 数据存储大小: 无限
  • 与服务端通信: 不参与

sessionStorage

  • 数据生命周期: 页面关闭就清理
  • 数据存储大小: 5M
  • 与服务端通信: 不参与

应用之登录

来源juejin.cn/post/727113…

登录标识

  • 用户登录之后,会返回一个用户的标识,
  • 之后带上这个标识请求别的接口,就能识别出该用户。
  • 标识登录状态的方案有两种: 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 里。