https://pkg.go.dev/github.com/golang-jwt/jwt#section-readme
基本用法
package mainimport ("fmt""github.com/dgrijalva/jwt-go""log""time")var (//signKey []byte//serverPort int)func fatal(err error) {if err != nil {log.Fatal(err)}}// Define some custom types were going to use within our tokenstype CustomerInfo struct {Name stringAge int}const secrect = "hello"func CreateToken(customer *CustomerInfo) (token string, err error) {withClaims := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{"name": customer.Name,"age": customer.Age,"ExpiresAt": time.Now().Add(time.Hour * 24).Unix(),})return withClaims.SignedString([]byte(secrect))}func ParseToken(token string) (customer *CustomerInfo, err error) {customer = &CustomerInfo{}parse, err := jwt.Parse(token, func(token *jwt.Token) (interface{}, error) {return []byte(secrect), nil})if err != nil {fmt.Println("错误", err)}claims := parse.Claims.(jwt.MapClaims)if !parse.Valid {fmt.Println("token被修改过")}customer.Name = claims["name"].(string)customer.Age = int(claims["age"].(float64))return}func main() {token, err := CreateToken(&CustomerInfo{Name: "zhangsan", Age: 18})fatal(err)fmt.Println(token)parseToken, err := ParseToken("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXRSJ9.eyJFeHBpcmVzQXQiOjE2NDg3MDM5NDIsImFnZSI6MTgsIm5hbWUiOiJ6aGFuZ3NhbiJ9.3co1PK7Vj_A551HEF-Vv0wwaSaDwKRlxz-kBFPk57lE")fatal(err)fmt.Println(parseToken)}
