首先我们要知道token是个什么东西?

token存储在redis token存储在session_Web


其实token就是信息加密后生成的登录凭证,tokens 是多用户下处理认证的最佳方式。因为

  1. 无状态、可扩展(不需要把session存在本地)
  2. 支持移动设备
  3. 跨程序调用
  4. 安全

那接下来你要知道的是存储这一东西的选择方向:

  1. 你可以存在cookie中,
    cookie 是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据。跟服务器没啥关系,仅仅是浏览器实现的一种数据存储功能。他的大小和数量都被相应限制。而且cookie是跨会话的
  2. 你可以存储在session中,

    sessionID会存储在浏览器的cookie中在,session会存储在服务器中,每个用户都需要在获取session的时候验证sessionID,所以session比较安全,但是缺很是消耗服务器的资源,因为要存储大量的sessionID并且不利于服务器迁移的情况(会造成session丢失)。
  3. web storage
存储空间不同 。

Web Storage 能提供 5MB 的存储空间(不同 浏览器 的提供的空间不同)

Cookie 仅 4KB 。

Web Storage 每个域(包括子域)有独立的存储空间,各个存储空间是完全独立的,因此不会造成数据混乱。

与服务器交互 。

Web Storage 中的数据则仅仅是存在本地,不会与服务器发生任何交互。

Cookie 的内容会随着请求一并发送的服务器(带宽浪费)。

接口 。

Web Storage 提供更多丰富易用的接口,拥有 setItem , getItem , removeItem , clear 等方法,操作数据更方便。

Cookie 需要前端开发者自己封装 setCookie , getCookie 。

跨域问题 。

cookie 需要指定作用域,不可以跨域调用

所以Cookie 也是不可以或缺的: Cookie 的作用是与服务器进行交互,作为 HTTP 规范的一部分而存在 ,而 Web Storage 仅仅是为了在本地“存储”数据而生。而token的安全和性能都是中肯的,唯一的问题就是cookie的存储性能和提取安全性太低,而localstorage更安全而且能够跨会话实现身份鉴别,很明显token应该存在localstorage里。