package middleware import ( "net/http" "strings" "NetworkAuth/services" "github.com/gin-gonic/gin" ) // MaintenanceMiddleware 维护模式中间件 // 当开启维护模式时,拦截非白名单请求 func MaintenanceMiddleware() gin.HandlerFunc { return func(c *gin.Context) { // 检查是否开启维护模式 if !services.GetSettingsService().IsMaintenanceMode() { c.Next() return } path := c.Request.URL.Path if !strings.HasPrefix(path, "/api") { c.Next() return } // 允许管理员后台相关接口(以便管理员登录关闭维护模式) // 包括登录页、登录接口、API接口、CSRF Token等 if strings.HasPrefix(path, "/api/admin") { c.Next() return } // 返回 503 JSON c.JSON(http.StatusServiceUnavailable, gin.H{ "code": 503, "success": false, "msg": "系统正在维护中,请稍后再试", }) c.Abort() } }