jwt实现状态保持:

为什么不用session实现?

session对于整体的项目存在的问题是:

传统的session实现状态保持,是将用户的登录信息保存在cookie中便于下次请求发送给应用,来达到应用识别用户的请求,

存在的问题是:随着用户数量的增减,独立运行项目的服务器无法承载太多用户,给服务器造成负载,

使用jwt基于token的鉴权机制,用户将个人信息用户名密码的请求服务器,服务器进行验证,通过验证之后发送给用户一个token,客户端存储token信息,并在每次请求时,附上这个token,服务器验证token之后,返回用户请求的数据

由于token必须在每次请求时传递给服务器端,将他保存在请求头之中,服务器也要支持cors跨域请求的达到资源共享

jwt 包含三个部分:

头header 载荷payload 签证signature

头部一般用来放类型jwt和加密的算法  通常使用hs256就可以

然后将头部进行base64位的加密(堆成解密)

第二部分载荷就是将用户的一些个人信息进行携带然后进行加密

第三部分signature:是签证他是由前两个部分进行加密之后

之间用 . 点连接组成字符串,再通过header中声明的256位的加密方式进行加盐secret组合加密  然后将这三部分用 . 点连接成一个完整的字符串,构成最终的 jwt

特别注意secret是保存在服务器端的,jwt的签发也在服务器端。他是服务器端的私钥需要保密。

jwt优点:通用性跨语言支持 Java PHP,,,

有了载荷就可以存储一些其他逻辑需要的非敏感信息

便于传输,构成简单,字节占用小

不需要再服务器端保存会话信息,易于应用的扩展

安全:不放敏感信息,保护好私钥,使用HTTPS协议