packagemainimport(github。comgolangjwtjwtv4mathrandtestingtime)funcTestJwtCreate(ttesting。T){定义私钥keyword:helloworld定义结构体typemyClaimsstruct{UsernamestringPasswordstring这个位置是与原来的不同的地方,原来写的是jwt。StandardClaims但是jwt。StandardClaims已经废弃了替代的是jwt。RegisteredClaimsjwt。RegisteredClaims}这个位置也是不同的地方新版本的ExpiresAt和IssuedAt的类型是jwt。NumericDate指针类型而jwt。NumericDate中的Time字段是time。Time类型新版本的ExpiresAt和IssuedAt写法如下:ExpiresAt:jwt。NumericDate{Time:time。Now()。Add(time。Hour),}IssuedAt:jwt。NumericDate{Time:time。Now(),}claims:myClaims{测试数据中的username和passwordUsername:admin,Password:123456,RegisteredClaims:jwt。RegisteredClaims{Issuer签发人是字符串Issuer:xuser,Subject:,Audience:nil,ExpiresAt:ExpiresAt,IssuedAt:IssuedAt,ID:,},}NewWithClaims使用指定的签名方法和声明创建新token。funcNewWithClaims(methodSigningMethod,claimsClaims)Tokenjwt。SigningMethodHS256代表其方法claims是之前创建的claimstoken:jwt。NewWithClaims(jwt。SigningMethodHS256,claims)func(tToken)SignedString(keyinterface{})(string,error)SignedString创建并返回一个完整的签名JWT。使用令牌中指定的签名方法对令牌进行签名。keyword是之前自定义的私钥,返回的结果是signedString字符串类型signedString,err:token。SignedString(〔〕byte(keyword))iferr!nil{t。Log(err)return}t。Log(signedString)} 代码截图 执行结果