// valid.js
module.exports = function(req) {
const token = req.headers['x-access-token'];
return jwt.verify(token, PRIMARY_KEY, function (err, decoded) {
if (err) {
return {
success: false,
data: {
code: -101,
message: 'Failed to authenticate token.'
}
}
}
return {
success: true,
}
})
}
// api.js
const tokenValid = require('../tokenValid');
router.post('/api/a', async(ctx, next) => {
const valid = tokenValid(ctx.request);
if (!valid.success) {
ctx.rest(valid.data);
return;
}
// todo
})
如果我有很多个接口,岂不是每个api中都要写一段重复代码。但是如何对async
进行封装,使得每个接口不需要在考虑token,除了登陆和注册。
你需要将你的jwt验证逻辑包装
Promise
,返回true,false中间件,检测登录
路由