jwt
json web token,一般用于用户认证(前后端分离、微信小程序、app开发)
-
传统的token认证
用户登录,服务端生成token返回给前端,并把相应的token保存到服务端,前端下次请求携带token,服务端进行token验证,通过返回成功信息
-
jwt
与传统的token方式不同的是:服务端不保存token,每次前端携带的token过来,服务端token的验证过程是通过相关的校验算法来进行验证的
注意:jwt生成的token是由三段字符串组成连接起来的
-
第一段字符串,header,内部包含算法/token类型
json转化成字符串, 然后做base64url加密
{ "alg": "HS256", "typ": "JWT" }
-
第二段字符串,payload,自定义数据
json转化成字符串,人后做base64url加密
{ "id": "123", "name": "张三", "exp": 1235 # 超时时间 }
-
第三段字符串
- 第1,2部分密文拼接起来
- 对前2部分的密文进行HS256加密 + 加盐
- 对HS256加密后的密文进行base64url加密
-
-
用户再次请求携带jwtoken
- 获取token
- 对token进行切割
- 对第二段进行base64url解密,获取payload
- 对第1,2段拼接进行HS256加密 + 加盐生成的密文和对第三段解密出来的密文进行对比,相同表示通过,否则token失效