四、JWT在Koa框架中实现用户的认证与授权
JWT是什么
- JSON Web Token是一个开放标准(RFC7519)
- 定义了一种紧凑且独立的方式,可以将各方之间的信息作为json对象进行安全传输
- 该信息可以验证和信任,因为是经过数字签名的。
JWT的构成
Header
typ
TOKEN的类型,固定为JWT
alg
使用hash算法
Payload
存储需要传递的信息,如用户ID、用户名等
还包含元数据,如过期时间、发布人等
与 Header不同, Payload可以加密
Signature
对 Header和 Payload部分进行签名
保证 Token在传输的过程中没有被篡改或者损坏
NodeJs中使用JWT
安装
jsonwebtoken
1
yarn add jsonwebtoken
使用
1
2const jsonwebtoken = require('jsonwebtoken')
const token = jsonwebtoken.sign({ _id, name }, secret, { expiresIn: "1d" })第一个参数
需要存放的信息
第二个参数
加密的密钥
第三个参数
过期时间
用户认证与授权
用户认证
1 | const jsonwebtoken = require('jsonwebtoken') |
授权
授权建立在认证的基础上。因此授权我们再写一个中间件。
1 | async checkOwner (ctx, next) { |
在认证中间件后继续引用。
1 | router.patch('/:id', auth, checkOwner, update) |
使用koa-jwt中间件实现用户认证与授权
安装koa-jwt
1
yarn add koa-jwt
使用
1
2
3const jwt = require('koa-jwt')
// 加密密钥
const auth = jwt({ secret })
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小康博客!
评论
TwikooWaline