package middleware import ( "log" "monica-proxy/internal/config" "net/http" "strings" "github.com/labstack/echo/v4" ) // BearerAuth 创建一个Bearer Token认证中间件 func BearerAuth() echo.MiddlewareFunc { return func(next echo.HandlerFunc) echo.HandlerFunc { return func(c echo.Context) error { // 获取Authorization header auth := c.Request().Header.Get("Authorization") // 检查header格式 if auth == "" || !strings.HasPrefix(auth, "Bearer ") { return echo.NewHTTPError(http.StatusUnauthorized, "invalid authorization header") } // 提取token token := strings.TrimPrefix(auth, "Bearer ") // 验证token if token != config.MonicaConfig.BearerToken || token == "" { log.Printf("invalid token: %s", token) return echo.NewHTTPError(http.StatusUnauthorized, "invalid token") } return next(c) } } }