Nodejs使用jwt
什么是jwt
jwt全称是JSON Web Token,是Token身份验证的方法之一。
jwt分为三个部分:
- header 请求头
- payload 负载的数据(如:用户id,过期时间等等)
- signature 签名,由服务端生成
jwt返回的token的形式为:采用的是Base64编码三部分是用
1
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2NvdW50IjoiMTIzIiwidGltZSI6MTYyOTg4MzM5MzU1OSwiaWF0IjoxNjI5ODgzMzkzfQ.31tMuBdryKXSSRSEEGs5eEPEDFPmVIStHGdKdNspP00
.
来分开的。
jwt的使用
下载npm包jsonwebtoken,使用的时候有两种常用的方法:
- sign 用于生成token,有三个参数:
payload
,secret
,options
,- 其中options中有很多参数如:
expiresIn
(过期时间,如”60”: 60ms,2 days”:两天,”10h”:是小时,”3d”:3天) 更多参数请看jsonwebtoken npm
- 其中options中有很多参数如:
- verify 用于验证token是否正确,参数如
jwt.verify(token, secretOrPublicKey, [options, callback])
,token
代表的是要验证的tokensecretOrPublicKey
代表的就是公钥(如果密钥是自己随便起的字符串,公钥也是该字符串
本篇文章采用的Node.js的框架是koa。 token默认是以Bearer+空格
开头的
1 | import Koa from 'koa'; |
打印结果:
1 | Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2NvdW50IjoiMTIzIiwidGltZSI6MTYyOTg4MzM5NTA3NywiaWF0IjoxNjI5ODgzMzk1fQ.525CfB6yVfkTI2Y5jMb_iFZZ0pETS7i69tpwFvIeo8A |
客户端发请求是在headers
中把token带上,后端再headers中接收到token,如:
1 | // 获取token |
获取密钥这一步可以写个中间件过滤一下:
1 | router.use((ctx: any, next: any) => { |
相关博客
-
2020-06-19
-
2022-07-10
-
2020-09-23
-
2020-08-09
-
2020-06-04