付智勇

token 验证

... ... @@ -11,6 +11,7 @@ const cors = require('koa-cors');
const index = require('./routes/index')
const users = require('./routes/users')
const filterUrl = require(__dirname+'/util/filterUrl')
var tokenUtil = require('./util/tokenUtil');
const _ = require('lodash');
// error handler
onerror(app)
... ... @@ -30,17 +31,25 @@ app.use(views(__dirname + '/views', {
// logger
app.use(async (ctx, next) => {
const start = new Date();
if(filterUrl.indexOf(ctx.request.url) != -1){
await next();
}else if(!ctx.header.token){
ctx.response.status = 400;
ctx.response.body = {msg:'请登录'}
}else{
await next();
try{
const start = new Date();
if(filterUrl.indexOf(ctx.request.url) != -1){
await next();
}else if(!ctx.header.token){
ctx.response.status = 200;
ctx.response.body = {code:0,msg:'请登录'}
}else{
let isToken = await tokenUtil.prverifySession(ctx.header.token);
await next();
}
const ms = new Date() - start;
console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)
}catch (e){
console.log('返回的err',e.message)
ctx.response.status = 200;
ctx.response.body = {code:0,msg:e.message}
}
const ms = new Date() - start
console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)
})
// routes
... ...
module.exports = ["/users/addUser","/users/login"]
\ No newline at end of file
module.exports = ["/users/addUser",]
\ No newline at end of file
... ...
... ... @@ -15,7 +15,8 @@ module.exports = new JwtSession() ;
* @param cb
*/
JwtSession.prototype.getSession = (users) =>{
var expiresIn = 60 * 60 * 60 * 60 * 60;
// var expiresIn = 60 * 60 * 60 * 60 * 60;
var expiresIn = 60 * 60 ;
var payload = {};
payload.id = users.id;
payload.name = users.loginName;
... ... @@ -36,16 +37,10 @@ JwtSession.prototype.getSession = (users) =>{
* @param token
* @param cb
*/
JwtSession.verifySession = function (token,cb) {
jwt.verify(token, 'Efangcpap',function (err ,data) {
console.dir(data);
if (err && err.name === 'TokenExpiredError') {
cb && cb({message: 'token expired'});
} else if (err && err.name === 'JsonWebTokenError') {
cb && cb({message: 'invalid token'});
}else {
cb && cb (null,data);
}
});
JwtSession.prototype.prverifySession = async(token) => {
try {
let back =jwt.verify(token, '3mang');
} catch (error) {
throw new Error(error)
}
};
... ...