token.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /*
  2. * @desc:token功能
  3. * @company:云南奇讯科技有限公司
  4. * @Author: yixiaohu
  5. * @Date: 2022/3/8 15:54
  6. */
  7. package service
  8. import (
  9. "context"
  10. "github.com/gogf/gf/v2/net/ghttp"
  11. "github.com/tiger1103/gfast-token/gftoken"
  12. "github.com/tiger1103/gfast/v3/internal/app/common/consts"
  13. "github.com/tiger1103/gfast/v3/internal/app/common/model"
  14. )
  15. type IGfToken interface {
  16. GenerateToken(ctx context.Context, key string, data interface{}) (keys string, err error)
  17. Middleware(group *ghttp.RouterGroup) error
  18. ParseToken(r *ghttp.Request) (*gftoken.CustomClaims, error)
  19. }
  20. type gfTokenImpl struct {
  21. *gftoken.GfToken
  22. }
  23. var gT = gfTokenImpl{
  24. GfToken: gftoken.NewGfToken(),
  25. }
  26. func GfToken(options *model.TokenOptions) IGfToken {
  27. var fun gftoken.OptionFunc
  28. if options.CacheModel == consts.CacheModelRedis {
  29. fun = gftoken.WithGRedis()
  30. } else {
  31. fun = gftoken.WithGCache()
  32. }
  33. gT.GfToken = gftoken.NewGfToken(
  34. gftoken.WithCacheKey(options.CacheKey),
  35. gftoken.WithTimeout(options.Timeout),
  36. gftoken.WithMaxRefresh(options.MaxRefresh),
  37. gftoken.WithMultiLogin(options.MultiLogin),
  38. gftoken.WithExcludePaths(options.ExcludePaths),
  39. fun,
  40. )
  41. return IGfToken(&gT)
  42. }