master
2022-02-14 97eb928060da31383c48d5275b2c4775933eeb66
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import { ICoolUrlTag } from '@cool-midway/core';
import { App, Provide } from '@midwayjs/decorator';
import {
  IWebMiddleware,
  IMidwayWebNext,
  IMidwayWebApplication,
} from '@midwayjs/web';
import { Context } from 'egg';
 
/**
 * 描述
 */
@Provide()
export class DemoUserMiddleware implements IWebMiddleware {
  @App()
  app: IMidwayWebApplication;
 
  resolve() {
    return async (ctx: Context, next: IMidwayWebNext) => {
      // 获得请求路径标签,可以利用此处来判断是否忽略token校验,以及其他需求场景
      const urlTag: ICoolUrlTag = await this.app
        .getApplicationContext()
        .getAsync('cool:urlTag');
      console.log('urlTag', urlTag);
      // 控制器前执行的逻辑
      const startTime = Date.now();
      // 执行下一个 Web 中间件,最后执行到控制器
      await next();
      // 控制器之后执行的逻辑
      console.log(Date.now() - startTime);
    };
  }
}