最近使用koa2的时候,想到使用jwt进行 鉴权。于是就使用了。下面是具体引用步骤
安装依赖包
npm install jsonwebtoken
和 npm install koa-jwt
. jsonwebtoken
是当下最通用
的服务端与客户端鉴权方式。即: 客户端输入账号密码,请求服务端后,服务端通过jsonwebtoken
生成一个token
字符串,返回给客户端,此后,客户端与服务器的会话都由这个token
来保持, 这
个生成的token
会对应客户端传来的账号和密码。每次客户端携带这个token
来进行身份识别。
使用kow-jwt
中间件
在app.js
中引入 kow-jwt
。然后设置中间件,使得每次请求都来校验token
1 |
|
生成token
在login
接口处使用jwt的sign 方法 生成token
1 | const jwt = require('jsonwebtoken') |
验证token
我们写一个接口getUserInfo
来验证token是否可用1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26const getUserInfo = function (ctx, next) {
const req = ctx.request.body
// 一般情况下token 是通过header来传递的
const token = ctx.header.authorization
// 解析token
const result = await tool.verifyToken(token);
// result 就是用户登录时存到jsonwebtoken中的登录信息
// 拿这个里面的信息去查数据库,取到用户的基本信息
const data = await user.find(req.mobile)
ctx.body = {
code: 0,
desc: '获取用户信息成功',
data: data
}
}
// tool.js的 verifyToken 方法
const getToken = require('jsonwebtoken')
// 注意,这个地方的密钥和app.js中的一样
const jwtSecret = 09876
const verifyToken = function (token) {
return new Promise((reslove, reject) => {
const info = getToken.verify(token.split(' ')[1], jwtSecret);
reslove(info);
})
}
总结
上面就是jswonwebtoken
的全部使用流程,希望可以帮助到你。谢谢