jwt.go 709 B

123456789101112131415161718192021222324252627282930
  1. package utils
  2. import (
  3. "time"
  4. "github.com/golang-jwt/jwt/v4"
  5. )
  6. type Claims struct {
  7. UserId int64
  8. jwt.RegisteredClaims
  9. }
  10. const TokenExpireDuration = time.Hour * 24 * 7 // token有效期7天
  11. var Secret = []byte("your-secret-key") // 实际使用时应该从配置文件读取
  12. // GenerateToken 生成JWT
  13. func GenerateToken(userId int64) (string, error) {
  14. claims := Claims{
  15. UserId: userId,
  16. RegisteredClaims: jwt.RegisteredClaims{
  17. ExpiresAt: jwt.NewNumericDate(time.Now().Add(TokenExpireDuration)),
  18. IssuedAt: jwt.NewNumericDate(time.Now()),
  19. NotBefore: jwt.NewNumericDate(time.Now()),
  20. },
  21. }
  22. token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
  23. return token.SignedString(Secret)
  24. }