package generatetoken import ( "fmt" "github.com/cristalhq/jwt" "standard/token/avata/model" "time" ) //生成token func GenerateTokenEntity(id string) (*model.OauthToken, error) { claim := model.TokenClaim{ Id: id, Timestamp: time.Now().UnixNano(), } accessToken, err := generateToken("ACCESS_TOKEN_KEY", claim) if err != nil { return nil, fmt.Errorf("get access token failed,err:%s", err.Error()) } refreshToken, err := generateToken("REFRESH_TOKEN_KEY", claim) if err != nil { return nil, fmt.Errorf("get refresh token failed,err:%s", err.Error()) } return &model.OauthToken{ Token: accessToken, ExpiredAt: time.Now().Add(time.Duration(7200) * time.Second), RefreshToken: refreshToken, RTokenExpiredAt: time.Now().Add(time.Duration(2592000) * time.Second), Id: id, }, nil } func generateToken(key string, claim interface{}) (string, error) { signer, err := jwt.NewSignerHS(jwt.HS256, []byte(key)) if err != nil { return "", err } // create a Builder builder := jwt.NewBuilder(signer) // and build a Token token, err := builder.Build(&claim) if err != nil { return "", err } return token.String(), nil }