package middleware import ( "net/http" "os" "github.com/gin-gonic/gin" ) // AuthToken 从环境变量或默认值获取认证token func GetAuthToken() string { token := os.Getenv("AUTH_TOKEN") if token == "" { // 默认token,生产环境应该通过环境变量设置 return "admin-token-123456" } return token } // AuthMiddleware Token认证中间件 func AuthMiddleware() gin.HandlerFunc { return func(c *gin.Context) { // 从Header中获取token token := c.GetHeader("Authorization") // 如果Header中没有,尝试从Query参数获取 if token == "" { token = c.Query("token") } // 移除 "Bearer " 前缀(如果存在) if len(token) > 7 && token[:7] == "Bearer " { token = token[7:] } // 验证token expectedToken := GetAuthToken() if token != expectedToken { c.JSON(http.StatusUnauthorized, gin.H{ "code": 401, "msg": "未授权,请先登录", }) c.Abort() return } // token验证通过,继续处理 c.Next() } }