jwt.verify.js 738 B

123456789101112131415161718192021222324252627282930313233
  1. import jwt from 'jsonwebtoken';
  2. const defaultOption = {
  3. secret: '',
  4. headerName: 'authorization',
  5. whiteList: ['/login', '/register'],
  6. };
  7. export default function (opts) {
  8. let { secret, headerName } = { ...defaultOption, ...opts };
  9. return async (ctx, next) => {
  10. try {
  11. const token = ctx.headers[headerName].replace('Bearer ', '');
  12. if (token == jwt.sign(jwt.verify(token, secret), secret)) {
  13. await next();
  14. } else {
  15. ctx.status = 4001;
  16. ctx.body = {
  17. code: 401,
  18. message: '您还未登录或登录已超时',
  19. };
  20. }
  21. } catch (err) {
  22. ctx.status = 401;
  23. ctx.body = {
  24. code: 401,
  25. message: '登录已超时',
  26. };
  27. }
  28. };
  29. }