| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 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()
- }
- }
|