jwt.go 798 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package utils
  2. import (
  3. "fmt"
  4. "time"
  5. "github.com/beego/beego/v2/core/logs"
  6. "github.com/dgrijalva/jwt-go"
  7. )
  8. var (
  9. KEY = []byte("5Mb5Gdmb5y")
  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() + 90*24*60*60),
  16. Issuer: "hongze_admin",
  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. }