package Config import ( "github.com/dgrijalva/jwt-go" "time" ) var ( // SecretKey 假设这是你的签名密钥 SecretKey = []byte("your-secret-key") ) // CreateToken 创建Token func CreateToken(userID int) (string, error) { token := jwt.New(jwt.SigningMethodHS256) claims := token.Claims.(jwt.MapClaims) claims["user_id"] = userID claims["exp"] = time.Now().Add(time.Hour * 1).Unix() // Token有效期1小时 return token.SignedString(SecretKey) } // ParseToken 解析Token func ParseToken(tokenString string) (*jwt.Token, error) { return jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { // Don't forget to validate the alg is what you expect: if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { return nil, nil } return SecretKey, nil }) } //func main() { // router := gin.Default() // // 登录接口,生成Token // router.GET("/login", func(c *gin.Context) { // // 假设用户ID是1 // userID := 1 // token, err := CreateToken(userID) // if err != nil { // c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) // return // } // c.JSON(http.StatusOK, gin.H{"token": token}) // }) // // // 需要Token验证的接口 // router.GET("/protected", func(c *gin.Context) { // token := c.Request.Header.Get("authorization") // 从HTTP头部获取Token // if token == "" { // c.JSON(http.StatusUnauthorized, gin.H{"error": "No token provided"}) // return // } // // // 解析Token // _, err := ParseToken(token) // if err != nil { // c.JSON(http.StatusUnauthorized, gin.H{"error": "Invalid token"}) // return // } // // // Token有效,继续业务逻辑 // c.JSON(http.StatusOK, gin.H{"message": "Authorized"}) // }) // // router.Run(":8080") //}