jwt.verify.js 687 B

12345678910111213141516171819202122232425262728293031
  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.body = {
  16. code: 401,
  17. message: '您还未登录或登录已超时',
  18. };
  19. }
  20. } catch (err) {
  21. ctx.body = {
  22. code: 401,
  23. message: '登录已超时',
  24. };
  25. }
  26. };
  27. }