token简析
特点
- 无状态、可扩展
- 大量用户事session可能造成拥堵,token不会,因为token已带有用户信息
- 扩展性 tokens能创建于其他程序同享权限的程序,使用token时可以提供可选的权限给第三方应用程序
- 支持移动设备
- 跨域程序调用
- 设置 Access-Control-Allow-Origin:* 所有请求访问,验证他token即可,实现跨域请求
- 安全
- cookie的CSRE(跨站请求伪造),不存储session,减少session操作,token的时效性,token的可撤销 revocation撤销一组token
基于服务器验证
http协议的无状态,一般都是使用cookie或者session做客户身份验证
基于token的验证
基于token验证是无状态的,不依赖服务器,我们将不会在服务器存储session和用户信息
NOsession意味着程序可以根据需要去增减机器,而不用担心用户是否登录
基于token身份验证过程
- 用户通过用户名和密码发送请求
- 程序验证
- 程序返回一个签名的token给客户端
- 客户端存储token,每次请求带上token验证
- 服务器验证token,返回数据
跨域问题
- 浏览器同源策略
- 同源策略限制的接口请求 解决简单的cokie获取请求问题
- 同源策略限制的Dom查询 如果没有同源策略,可以获取到别人网页的dom属性并查询
token的自动续期问题
添加refreshToken
- token验证通过 ok
- token验证过期,查看refreshToken是否过期,未过期则刷新token,并返回新tokne和请求数据,
- token过期 refreshtoken也失效 则返回登录