JWT符合[RFC 7519]规范,它的优点在于可以取代Session和Cookie验证的方式。属于Token-Based的范畴。html
header(头部).payload(载荷).signature(签名)
注:三个部分之间用英文句号.来分隔。web
{ "typ": "JWT", #类型,代表是一个JWT字符串 "alg": "HS256" #加密算法 }
编码后:算法
ewogICAgInR5cCI6ICJKV1QiLAogICAgImFsZyI6ICJIUzI1NiIKfQ==
通常Header只须要这两个字段便可。数据库
{ "user_id":pzdn2009, #用戶Id, "name":"pzdn", #名称 "exp":1556999524 #token過期時間 }
编码后:json
ewogICAgInVzZXJfaWQiOnB6ZG4yMDA5LCAKICAgICJuYW1lIjoicHpkbiIsIAogICAgImV4cCI6MTU1Njk5OTUyNCAKfQ==
payload用来承载要传递的数据,它的json结构其实是对JWT要传递的数据的一组声明,这些声明被JWT标准称为claims,它的一个“属性值对”其实就是一个claim,每个claim的都表明特定的含义和做用。服务器
计算signature:编码
HMACSHA256(base64(header)+"."+base64(payload),secret="mypasswordsdfasdfsddfjjcud")
最终header.payload.signature连成一串,就是JWT。加密
官方:https://jwt.io/#libraries-iocode
[基于Token的身份验证——JWT]http://www.cnblogs.com/zjutzz/p/5790180.html
[~3种web会话管理的方式]http://www.cnblogs.com/lyzg/p/6067766.html#_label2jwt