package middleware import ( "base-framework/pkg/config" "base-framework/pkg/router" "base-framework/pkg/utils" "base-framework/pkg/utils/response" "errors" "fmt" "strings" ) func Auth() router.HandlerFunc { return func(c *router.Context) { tokenHeader := c.Header("Authorization") userIdHeader := c.Header("user_id") orgIDHeader := c.Header("org_id") // 缺少登录信息 if tokenHeader == "" || userIdHeader == "" || orgIDHeader == "" { response.Error(c).Code(response.CodeNoLogin).Send() return } // Bearer token 格式校验 parts := strings.Fields(tokenHeader) if len(parts) != 2 || strings.ToLower(parts[0]) != "Bearer" { response.Error(c).Code(response.CodeInvalidToken).Send() return } // 解析 token tokenStr := parts[1] claims, err := utils.VerifyToken(tokenStr) if err != nil { switch { case errors.Is(err, utils.ErrTokenExpired): response.Error(c).Code(response.CodeLoginExpired).Send() default: response.Error(c).Code(response.CodeInvalidToken).Send() } return } // user_id 校验 if claims.UserID != userIdHeader { response.Error(c).Code(response.CodeInvalidToken).Send() return } // org_id 校验 if claims.OrgID != orgIDHeader { response.Error(c).Code(response.CodeInvalidToken).Send() return } configs := config.GetDBConfigs() for k := range configs { fmt.Println(k) } c.Next() } }