verify有问题吗

来源:9-17 导航丢失问题是修复与认证校验优化

qq_蓝骏毅_04076633

2021-04-25

JsonWebTokenError: jwt malformed
      at Object.module.exports [as verify] (C:\Users\pc\Desktop\projects\book-mgr\book-mgr-be\node_modules\jsonwebtoken\verify.js:63:17)
      at C:\Users\pc\Desktop\projects\book-mgr\book-mgr-be\src\helpers\token\index.js:20:9
      at new Promise (<anonymous>)
      at verify (C:\Users\pc\Desktop\projects\book-mgr\book-mgr-be\src\helpers\token\index.js:19:10)
      at checkUser (C:\Users\pc\Desktop\projects\book-mgr\book-mgr-be\src\helpers\token\index.js:51:44)
      at dispatch (C:\Users\pc\Desktop\projects\book-mgr\book-mgr-be\node_modules\koa-compose\index.js:42:32)
      at C:\Users\pc\Desktop\projects\book-mgr\book-mgr-be\node_modules\koa-unless\index.js:26:14
      at dispatch (C:\Users\pc\Desktop\projects\book-mgr\book-mgr-be\node_modules\koa-compose\index.js:42:32)
      at catchTokenError (C:\Users\pc\Desktop\projects\book-mgr\book-mgr-be\src\helpers\token\index.js:78:10)
      at dispatch (C:\Users\pc\Desktop\projects\book-mgr\book-mgr-be\node_modules\koa-compose\index.js:42:32)
      at C:\Users\pc\Desktop\projects\book-mgr\book-mgr-be\node_modules\koa-body\index.js:148:14
      at processTicksAndRejections (internal/process/task_queues.js:97:5)
      at async cors (C:\Users\pc\Desktop\projects\book-mgr\book-mgr-be\node_modules\@koa\cors\index.js:98:16)
const verify = (token) => {
  return new Promise((resolve, reject) => {
    jwt.verify(token, config.JWT_SECRET, (err, payload) => {
      if (err) {
        reject(err);
        return;
      }

      resolve(payload);
    });
  });
};
onst res401 = (ctx) => {
  ctx.status = 401;
  ctx.body = {
    code: 0,
    msg: '用户校验失败',
  };
};

const checkUser = async (ctx, next) => {
	const { _id, account, character } = await verify(getToken(ctx));
	
	//console.log(payload);
	
	const user = await User.findOne({
	    _id,
	}).exec();
	
	if (!user) {
	    res401(ctx);
	    return;
	}
	
	if (account !== user.account) {
	    res401(ctx);
	    return;
	  }
	  
	if (character !== user.character) {
	    res401(ctx);
	    return;
	  }
	
	await next();
};


写回答

2回答

qq_蓝骏毅_04076633

提问者

2021-04-25

const jwt = require('jsonwebtoken')

const config = require('../../project.config')

const koaJwt = require('koa-jwt')

const mongoose = require('mongoose')

const User = mongoose.model('User')

const getToken = (ctx) => {
	
  let { authorization } = ctx.header;

  return authorization.replace('Bearer ', '').replace('bearer ', '');
};

const verify = (token) => {
  return new Promise((resolve, reject) => {
    jwt.verify(token, config.JWT_SECRET, (err, payload) => {
      if (err) {
        reject(err);
        return;
      }

      resolve(payload);
    });
  });
};

const middleware = (app) => {
  app.use(koaJwt({
    secret: config.JWT_SECRET,
  }).unless({
    path: [
      /^\/auth\/login/,
      /^\/auth\/register/,
    ],
  }));
};

const checkUser = async (ctx, next) => {
	const payload = await verify(getToken(ctx));
	
	console.log(payload);
	
	await next();
	
}

const catchTokenError = async (ctx, next) => {
  return next().catch((error) => {
    if (error.status === 401) {
      ctx.status = 401;

      ctx.body = {
        code: 0,
        msg: 'token error',
      };
    } else {
      throw error;
    }
  });
};;

module.exports = {
	verify,
	getToken,
	middleware,
	catchTokenError,
	
};

是不在这里打印token

0
1
然冬
能在服务端打印出toke那就行,然后再决定下一步怎么做
2021-04-26
共1条回复

然冬

2021-04-25

先看token是不是正常的

0
0

毕设一课通 高效完成毕业设计(选题/毕设/论文/答辩)

为计算机专业大学生解决“毕业难题”

344 学习 · 606 问题

查看课程