token机制
何为token
token即为令牌,是服务器生成的一串字符串,作为客户端向服务器进行请求的“通行证”。在客户端进行初次登陆后由服务器返回,之后的每次请求只需要携带token进行请求即可,而无需携带密码等敏感信息
为何token
- token可以减少敏感信息在网络间的传递
- 因为json的通用性,所以JWT是可以进行跨语言支持的,像JAVA,JavaScript,NodeJS,PHP等很多语言都可以使用
- JWT可以在自身存储一些其他业务逻辑所必要的非敏感信息
- 便于传输,jwt的构成非常简单,字节占用很小,所以它是非常便于传输的。它不需要在服务端保存会话信息, 所以它易于应用的扩展
基于token的登录流程
基于token的请求流程
token的结构
先来看看生成的jwt token的样子:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTA1NDcyMzQsImRhdGEiOiJkYXRhIiwiaWF0IjoxNjEwNTQwMDM0fQ.Qno5UbhzAvlN6QAXpbqpOkeTMt4qEQvmY50Yh87JD74
token分为3个部分,每个部分由一个字符 “ . ”相连:
-
第一部分(头部/header):
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
头部与http的头部差不多作用,是用来存放声明信息的,其主要有:
{ "typ":