InitMiddlewares 初始化中间件
(ih ijwt.Handler, l *zap.Logger)
| 14 | |
| 15 | // InitMiddlewares 初始化中间件 |
| 16 | func InitMiddlewares(ih ijwt.Handler, l *zap.Logger) []gin.HandlerFunc { |
| 17 | prom := &prometheus.MetricsPlugin{ |
| 18 | Namespace: "linkme", |
| 19 | Subsystem: "api", |
| 20 | InstanceID: "instance_1", |
| 21 | } |
| 22 | |
| 23 | // 注册指标 |
| 24 | prom.RegisterMetrics() |
| 25 | |
| 26 | corsConfig := cors.Config{ |
| 27 | AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"}, |
| 28 | AllowCredentials: true, |
| 29 | AllowHeaders: []string{"Content-Type", "Authorization", "X-Refresh-Token", "X-Request-ID"}, |
| 30 | ExposeHeaders: []string{"x-jwt-token", "x-refresh-token"}, |
| 31 | MaxAge: 12 * time.Hour, |
| 32 | } |
| 33 | |
| 34 | if viper.GetBool("cors.allow_all") { |
| 35 | corsConfig.AllowAllOrigins = true |
| 36 | } else { |
| 37 | allowedOrigins := viper.GetStringSlice("cors.allow_origins") |
| 38 | corsConfig.AllowOriginFunc = func(origin string) bool { |
| 39 | if origin == "" { |
| 40 | return true |
| 41 | } |
| 42 | for _, item := range allowedOrigins { |
| 43 | if item == origin { |
| 44 | return true |
| 45 | } |
| 46 | } |
| 47 | return false |
| 48 | } |
| 49 | } |
| 50 | |
| 51 | return []gin.HandlerFunc{ |
| 52 | cors.New(corsConfig), |
| 53 | // 统计响应时间 |
| 54 | prom.TrackActiveRequestsMiddleware(), |
| 55 | // 统计活跃请求数 |
| 56 | prom.TrackResponseTimeMiddleware(), |
| 57 | middleware.NewJWTMiddleware(ih).CheckLogin(), |
| 58 | middleware.NewLogMiddleware(l).Log(), |
| 59 | } |
| 60 | } |
no test coverage detected