首先我们要知道token是个什么东西?
其实token就是信息加密后生成的登录凭证,tokens 是多用户下处理认证的最佳方式。因为
- 无状态、可扩展(不需要把session存在本地)
- 支持移动设备
- 跨程序调用
- 安全
那接下来你要知道的是存储这一东西的选择方向:
- 你可以存在cookie中,
cookie 是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据。跟服务器没啥关系,仅仅是浏览器实现的一种数据存储功能。他的大小和数量都被相应限制。而且cookie是跨会话的 - 你可以存储在session中,
sessionID会存储在浏览器的cookie中在,session会存储在服务器中,每个用户都需要在获取session的时候验证sessionID,所以session比较安全,但是缺很是消耗服务器的资源,因为要存储大量的sessionID并且不利于服务器迁移的情况(会造成session丢失)。 - 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里。