1 从个小问题开始
Json web token 是一种跨域认证解决方案。
1.1 提问?
判断一个用户是否已经授权登录有几种方式?
- cookie
- session
- token
1.2 基于token的鉴权机制
基于token的鉴权机制类似于http协议也是无状态的,它不需要在服务端去保留用户的认证信息或者会话信息。这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利。
流程上是这样的:
- 用户使用用户名密码来请求服务器
- 服务器进行验证用户的信息
- 服务器通过验证发送给用户一个token
- 客户端存储token,并在每次请求时附送上这个token
- 服务端验证token值,并返回数据
这个token必须要在每次请求时传递给服务端,它应该保存在请求头里, 另外,服务端要支持CORS(跨来源资源共享)策略,一般我们在服务端设置Access-Control-Allow-Origin: *
服务器不保存任何会话数据,即服务器变为无状态,使其更容易扩展。
JWT就是token机制的一种实现方式。
1.3 JWT跟session机制的比较
传统session机制没有分布式架构,无法支持横向扩展,不适用于服务器集群或者跨域体系结构。
每个用户经过我们的应用认证之后,我们的应用都要在服务端做一次记录,以方便用户下次请求的鉴别&