checkToken.middleware.ts 946 B

123456789101112131415161718192021222324252627282930313233
  1. import { IMiddleware } from '@midwayjs/core';
  2. import { Middleware, Inject } from '@midwayjs/decorator';
  3. import { NextFunction, Context } from '@midwayjs/koa';
  4. import get = require('lodash/get');
  5. import { JwtService } from '@midwayjs/jwt';
  6. @Middleware()
  7. export class CheckTokenMiddleware
  8. implements IMiddleware<Context, NextFunction>
  9. {
  10. @Inject()
  11. jwtService: JwtService;
  12. resolve() {
  13. return async (ctx: Context, next: NextFunction) => {
  14. const token: any = get(ctx.request, 'header.token');
  15. if (token) {
  16. const data = this.jwtService.decodeSync(token);
  17. if (data) ctx.user = data;
  18. }
  19. // 添加管理员身份
  20. const adminToken: any = get(ctx.request, 'header.admin-token');
  21. if (adminToken) {
  22. const data = this.jwtService.decodeSync(adminToken);
  23. if (data) ctx.admin = data;
  24. }
  25. await next();
  26. };
  27. }
  28. static getName(): string {
  29. return 'checkToken';
  30. }
  31. }