jwt.js 701 B

1234567891011121314151617181920212223242526272829303132
  1. 'use strict';
  2. module.exports = options => {
  3. return async function jwt(ctx, next) {
  4. const str = ctx.request.header.authorization;
  5. let decode;
  6. if (str) {
  7. try {
  8. const token = str.substring(7);
  9. // 解码token
  10. decode = ctx.app.jwt.verify(token, options.secret);
  11. } catch (error) {
  12. ctx.status = 401;
  13. ctx.body = {
  14. errmsg: error.message,
  15. errcode: -1001,
  16. };
  17. return;
  18. }
  19. if (decode) {
  20. await next();
  21. return decode;
  22. }
  23. } else {
  24. ctx.status = 401;
  25. ctx.body = {
  26. errmsg: '身份过期,重新登录',
  27. errcode: -1002,
  28. };
  29. return;
  30. }
  31. };
  32. };