jwt.go 951 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package utils
  2. import (
  3. "github.com/dgrijalva/jwt-go"
  4. "time"
  5. )
  6. var jwtSecret []byte
  7. type Claims struct {
  8. Username string `json:"username"`
  9. Password string `json:"password"`
  10. jwt.StandardClaims
  11. }
  12. func CreateToken(username string, password string) (string, error) {
  13. nowTime := time.Now()
  14. expireTime := nowTime.Add(3 * time.Hour)
  15. claims := Claims{
  16. MD5(username),
  17. MD5(password),
  18. jwt.StandardClaims{
  19. ExpiresAt: expireTime.Unix(),
  20. Issuer: "gin-blog",
  21. },
  22. }
  23. tokenClaims := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
  24. token, err := tokenClaims.SignedString(jwtSecret)
  25. return token, err
  26. }
  27. func ParseToken(token string) (*Claims, error) {
  28. tokenClaims, err := jwt.ParseWithClaims(token, &Claims{}, func(token *jwt.Token) (interface{}, error) {
  29. return jwtSecret, nil
  30. })
  31. if tokenClaims != nil {
  32. if claims, ok := tokenClaims.Claims.(*Claims); ok && tokenClaims.Valid {
  33. return claims, nil
  34. }
  35. }
  36. return nil, err
  37. }