/* * 用户鉴权 */ package jwt import ( "time" "github.com/golang-jwt/jwt/v4" ) type JwtStruct struct { SecretKey string TimeOut int64 } var UserJwt = &JwtStruct{ SecretKey: "jianyuservice", //保持一致 TimeOut: 600, } func (this *JwtStruct) GetToken(payloads map[string]interface{}) (string, error) { now := time.Now().Add(-10 * time.Second).Unix() //当前时间往前10s iat时间要在相应服务器时间之前 否则会报错Token used before issued claims := make(jwt.MapClaims) claims["exp"] = now + this.TimeOut claims["iat"] = now for k, v := range payloads { claims[k] = v } token := jwt.New(jwt.SigningMethodHS256) token.Claims = claims return token.SignedString([]byte(this.SecretKey)) }