三、从零模拟新浪微博-jwt示例
koa2中使用jwt生成TOKEN
安装插件
1
yarn add koa-jwt jsonwebtoken
注册中间件
1
2
3
4
5
6
7
8
9const jwtKoa = require('koa-jwt')
// jwt
app.use(
jwtKoa({
secret: SECRET
}).unless({
path: [/^\/users\/login/] // 定义那些目录忽略jwt验证
})
)SECRET
是一个加密的密钥,字符串类型。在登录成功后返回token
1
2
3
4
5
6const jwt = require('jsonwebtoken')
const { SECRET } = require('../conf/constants')
let token
if (userInfo) {
token = jwt.sign(userInfo, SECRET, { expiresIn: '1h' })
}
Koa2中获取token中的用户信息
在请求时在请求头加入字段
Authorization
,值为token值Bearer [TOKEN]
获得token的信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19// 获取用户信息
router.get('/getUserInfo', async function (ctx, next) {
const token = ctx.header.authorization
// 也可以获得session解密后的信息
console.log(ctx.state)
// 手动对jwt解密
try {
const payload = await verify(token.split(' ')[1], SECRET)
ctx.body = {
errno: 0,
userInfo: payload
}
} catch (ex) {
ctx.body = {
errno: 0,
msg: 'verify token failed'
}
}
})
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小康博客!
评论
TwikooWaline