// JWTAuthMiddleware 基于JWT的认证中间件// func JWTAuthMiddleware() func(c *gin.Context) {// return func(c *gin.Context) {// // 客户端携带Token有三种方式 1.放在请求头 2.放在请求体 3.放在URI// // 这里假设Token放在Header的Authorization中,并使用Bearer开头// // 这里的具体实现方式要依据你的实际业务情况决定// authHeader := c.Request.Header.Get("Authorization")// if authHeader == "" { // 如果请求头中没有附带token// c.JSON(http.StatusOK, gin.H{// "code": 2003,// "msg": "请求头中auth为空",// })// c.Abort()// return// }// // 按空格分割// parts := strings.SplitN(authHeader, " ", 2)// if !(len(parts) == 2 && parts[0] == "Bearer") {// c.JSON(http.StatusOK, gin.H{// "code": 2004,// "msg": "请求头中auth格式有误",// })// c.Abort()// return// }// // parts[1]是获取到的tokenString,我们使用之前定义好的解析JWT的函数来解析它// mc, err := myjwt.ParseToken(parts[1])// if err != nil {// c.JSON(http.StatusOK, gin.H{// "code": 2005,// "msg": "无效的Token",// })// c.Abort()// return// }// // 将当前请求的username信息保存到请求的上下文c上// c.Set("username", mc.Username)// c.Set("number", mc.Number)// c.Next() // 后续的处理函数可以用过c.Get("username")来获取当前请求的用户信息// }// }