token.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package token
  2. import (
  3. "github.com/dgrijalva/jwt-go"
  4. "github.com/gin-gonic/gin"
  5. "github.com/google/uuid"
  6. "github.com/sirupsen/logrus"
  7. "os"
  8. "time"
  9. )
  10. type UserClaims struct {
  11. ID int64 `json:"user_id"`
  12. UserName string `json:"user_name"`
  13. RoleId int64 `json:"role_id"`
  14. Avatar string `json:"avatar"`
  15. Nickname string `json:"nickname"`
  16. SystemId int32 `json:"system_id"`
  17. AccessToken string `json:"access_token"`
  18. jwt.StandardClaims
  19. }
  20. var (
  21. secret = []byte(os.Getenv("JWT_SECRET"))
  22. effectTime = 30 * 24 * time.Hour // 30天有效期
  23. )
  24. func GetAuthorization(c *gin.Context) (t string) {
  25. t = c.GetHeader("authorization")
  26. if t == "" {
  27. t = c.Request.URL.Query().Get("authorization")
  28. }
  29. return t
  30. }
  31. func CurrentUser(c *gin.Context) *UserClaims {
  32. if user, _ := c.Get("user"); user != nil {
  33. if u, ok := user.(*UserClaims); ok {
  34. return u
  35. }
  36. }
  37. logrus.Warn("CurrentUser = nil")
  38. return nil
  39. }
  40. func GetUID(c *gin.Context) int64 {
  41. user := CurrentUser(c)
  42. if user == nil {
  43. return 0
  44. }
  45. return user.ID
  46. }
  47. func GenerateTokenUsingUUID() string {
  48. return uuid.New().String()
  49. }