package main import ( "strings" "github.com/gin-gonic/gin" ) // Token 认证中间件 func TokenAuth() gin.HandlerFunc { return func(c *gin.Context) { // 从请求头获取 token authHeader := c.GetHeader("Authorization") if authHeader == "" { c.JSON(401, gin.H{"error": "Missing Authorization header"}) c.Abort() return } // 验证 token 格式(Bearer xxx) parts := strings.SplitN(authHeader, " ", 2) if len(parts) != 2 || parts[0] != "Bearer" { c.JSON(401, gin.H{"error": "Invalid Authorization header"}) c.Abort() return } token := parts[1] // 验证 token 有效性(简化版,实际应使用 JWT) if !isValidToken(token) { c.JSON(401, gin.H{"error": "Invalid token"}) c.Abort() return } // 提取用户信息(从 token) userID := extractUserID(token) c.Set("user_id", userID) c.Next() } } // 验证 token(示例) func isValidToken(token string) bool { return token == "valid_token_123" } // 提取用户ID(示例) func extractUserID(token string) string { return "user123" } func main() { r := gin.Default() // 需要 token 的路由 r.GET("/profile", TokenAuth(), func(c *gin.Context) { userID := c.GetString("user_id") c.JSON(200, gin.H{ "user_id": userID, "profile": "User profile data", }) }) r.Run(":9999") }