jwt.go 787 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package utils
  2. import (
  3. "fmt"
  4. "time"
  5. "github.com/beego/beego/v2/adapter/logs"
  6. "github.com/dgrijalva/jwt-go"
  7. )
  8. var (
  9. KEY = []byte("5Mb5Gdmb5x")
  10. )
  11. func GenToken(account string) string {
  12. token := jwt.New(jwt.SigningMethodHS256)
  13. token.Claims = &jwt.StandardClaims{
  14. NotBefore: int64(time.Now().Unix()),
  15. ExpiresAt: int64(time.Now().Unix() + 3600*3),
  16. Issuer: "csdp",
  17. Subject: account,
  18. }
  19. ss, err := token.SignedString(KEY)
  20. if err != nil {
  21. logs.Error(err)
  22. return ""
  23. }
  24. return ss
  25. }
  26. func CheckToken(account, token string) bool {
  27. t, err := jwt.Parse(token, func(*jwt.Token) (interface{}, error) {
  28. return KEY, nil
  29. })
  30. if err != nil {
  31. fmt.Println(err.Error())
  32. return false
  33. }
  34. if account != t.Claims.(jwt.MapClaims)["sub"] {
  35. return false
  36. }
  37. return t.Valid
  38. }