package middleware import ( "strings" "github.com/gin-gonic/gin" "soda-api/backend/internal/utils" ) type AuthMiddleware struct { jwtManager *utils.JWTManager } func NewAuthMiddleware(jwtManager *utils.JWTManager) gin.HandlerFunc { return func(c *gin.Context) { authHeader := c.GetHeader("Authorization") if authHeader == "" || !strings.HasPrefix(authHeader, "Bearer ") { utils.JSONError(c, 401, "缺少或无效的认证信息") c.Abort() return } tokenString := strings.TrimPrefix(authHeader, "Bearer ") claims, err := jwtManager.Parse(tokenString) if err != nil { utils.JSONError(c, 401, "认证失败: "+err.Error()) c.Abort() return } c.Set("claims", claims) c.Set("tokenString", tokenString) c.Next() } }