generateToken.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package generatetoken
  2. import (
  3. "fmt"
  4. "github.com/cristalhq/jwt"
  5. "standard/token/avata/model"
  6. "time"
  7. )
  8. //生成token
  9. func GenerateTokenEntity(id string) (*model.OauthToken, error) {
  10. claim := model.TokenClaim{
  11. Id: id,
  12. Timestamp: time.Now().UnixNano(),
  13. }
  14. accessToken, err := generateToken("ACCESS_TOKEN_KEY", claim)
  15. if err != nil {
  16. return nil, fmt.Errorf("get access token failed,err:%s", err.Error())
  17. }
  18. refreshToken, err := generateToken("REFRESH_TOKEN_KEY", claim)
  19. if err != nil {
  20. return nil, fmt.Errorf("get refresh token failed,err:%s", err.Error())
  21. }
  22. return &model.OauthToken{
  23. Token: accessToken,
  24. ExpiredAt: time.Now().Add(time.Duration(7200) * time.Second),
  25. RefreshToken: refreshToken,
  26. RTokenExpiredAt: time.Now().Add(time.Duration(2592000) * time.Second),
  27. Id: id,
  28. }, nil
  29. }
  30. func generateToken(key string, claim interface{}) (string, error) {
  31. signer, err := jwt.NewSignerHS(jwt.HS256, []byte(key))
  32. if err != nil {
  33. return "", err
  34. }
  35. // create a Builder
  36. builder := jwt.NewBuilder(signer)
  37. // and build a Token
  38. token, err := builder.Build(&claim)
  39. if err != nil {
  40. return "", err
  41. }
  42. return token.String(), nil
  43. }