一、koa token生成、验证
koa-jwt官网
https://github.com/koajs/jwt
推荐一个koa-jwt学习文档:
https://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html
jsonwebtoken方法添加
const { sign, verify } = require('jsonwebtoken');
const secretKey = "cariadakkodis";
module.exports = {
// 获取token
getToken(ctx) {
return ctx.request.headers.Authorization || '';
},
// 加密
signToken(userInfo){
// 定义 secret 密钥
const token = sign(
{ username: userInfo.username, password: userInfo.password },
secretKey,
{ expiresIn: '1h' }
// { expiresIn: 10 } // 10s
);
return token;
},
// 验签
verifyToken(token){
return verify(token, secretKey);
},
// 将secretKey返回
secretKey
}
app.js 中添加
const jwt = require("koa-jwt");
const token = require("./utils/token.js");
// 对没有验签通过返回的错误进行拦截处理
app.use(async (ctx, next) => {
// 如果token没有经过验证中间件会返回401错误,可以通过下面的中间件自定义处理这个错误
await next().catch((err)=>{
if (401 === err.status) {
ctx.status = 401;
ctx.body = {
data: '没有找到token信息,请检查接口请求头信息'
};
console.log("未找到token: "+ err);
} else {
console.log(err);