koa-mvc-cli
Version:
快速创建基于koa2的mvc工程
32 lines (23 loc) • 775 B
JavaScript
/**
* 自动刷新 jwt token
* request header中 token-refresh=true 时刷新
* 刷新后在 response header auth_token 中
*
*/
const debug = require('debug')('jwt-refresh');
const jwt = require('jsonwebtoken');
const koajwt = require('koa-jwt');
module.exports = async (ctx, next) => {
await next();
var token = ctx.headers['authorization'];
if (token) {
if (ctx.headers['token-refresh']) {
let user = ctx.state.user;
delete user.iat;
delete user.exp;
token = jwt.sign(user, ctx._appConfig.tokenKey, { expiresIn: ctx._appConfig.tokenExpires });
debug('延长 %s 新token %s', ctx._appConfig.tokenExpires, token);
}
ctx.res.setHeader('auth_token', token);
}
}