Add management API endpoints

This commit is contained in:
DullJZ
2025-11-04 19:57:02 +08:00
parent 529ee8fe55
commit ffc21aa49c
6 changed files with 268 additions and 4 deletions
+34
View File
@@ -4,6 +4,7 @@ import (
"context"
"fmt"
"net/http"
"strings"
"github.com/DullJZ/s3-validate/pkg/s3validate"
)
@@ -76,3 +77,36 @@ func invokeOnError(w http.ResponseWriter, r *http.Request, cfg S3SignatureConfig
}
http.Error(w, message, http.StatusForbidden)
}
// TokenAuthMiddleware 创建Token认证中间件,用于管理API
func TokenAuthMiddleware(validToken string) func(http.Handler) http.Handler {
return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// 从Authorization头中提取token
authHeader := r.Header.Get("Authorization")
if authHeader == "" {
w.Header().Set("Content-Type", "application/json")
http.Error(w, `{"error": "missing authorization header"}`, http.StatusUnauthorized)
return
}
// 支持两种格式:
// 1. Bearer <token>
// 2. <token>
token := authHeader
if strings.HasPrefix(authHeader, "Bearer ") {
token = strings.TrimPrefix(authHeader, "Bearer ")
}
// 验证token
if token != validToken {
w.Header().Set("Content-Type", "application/json")
http.Error(w, `{"error": "invalid token"}`, http.StatusUnauthorized)
return
}
// 继续处理请求
next.ServeHTTP(w, r)
})
}
}