JWT-生成token

1. 什么是JWT

 JWT 即Json Web Token,将用户登录状态以及数据用加密的json格式存储在客户端,服务端可以完全依靠这个字符串认定用户身份。简单来说,这是一种用户身份认证的解决方案。

2. JWT的构成

一个JWT实际上就是一个字符串,由三部分组成分别是:

header(头部)
payload(载荷)
signature(签名)
结构如下:header.payload.signature


第一部分:header(头部)
header(头部)的信息指定了其Token类型和所使用的加密算法。

{
   "typ": "JWT",
  "alg": "HS256"
}

然后将头部进行base64编码(该加密是可以解码的),构成了第一部eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9


第二部分:payload(载荷)
payload(载荷)信息存放的是Claims声明信息。载荷其实就是自定义的数据,一般存储用户Id,过期时间等信息。也就是JWT的核心所在,因为这些数据就是使后端知道此token是哪个用户已经登录的凭证。而且这些数据是存在token里面的,由前端携带,所以后端几乎不需要保存任何数据。

{
   'id': user.id,
   'username': user.username,
   ‘exp’: time.time() + 300,  #过期时间
}
然后将其进行base64编码,得到Jwt的第二部分:eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZvaG4gRGdWV9

第三部分:signature(签名)
signature(签名)需要使用编码后的header和payload以及一个秘钥,使用header中声明的编码方式进行加盐secret组合加密,然后就构成了jwt的第三部分:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZvaG4gRGdWV9

最后将 token = header + '.'+ payload +'.'+ signature,生成token


版权声明:本文为m0_69128892原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。