token.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /*
  2. * @desc:token功能
  3. * @company:云南奇讯科技有限公司
  4. * @Author: yixiaohu<yxh669@qq.com>
  5. * @Date: 2022/9/27 17:01
  6. */
  7. package token
  8. import (
  9. "github.com/gogf/gf/v2/frame/g"
  10. "github.com/gogf/gf/v2/os/gctx"
  11. "github.com/tiger1103/gfast-token/gftoken"
  12. "github.com/tiger1103/gfast/v3/internal/app/common/consts"
  13. commonModel "github.com/tiger1103/gfast/v3/internal/app/common/model"
  14. "github.com/tiger1103/gfast/v3/internal/app/system/service"
  15. "github.com/tiger1103/gfast/v3/library/liberr"
  16. )
  17. type sToken struct {
  18. *gftoken.GfToken
  19. }
  20. func New() *sToken {
  21. var (
  22. ctx = gctx.New()
  23. opt *commonModel.TokenOptions
  24. err = g.Cfg().MustGet(ctx, "gfToken").Struct(&opt)
  25. fun gftoken.OptionFunc
  26. )
  27. liberr.ErrIsNil(ctx, err)
  28. if opt.CacheModel == consts.CacheModelRedis {
  29. fun = gftoken.WithGRedis()
  30. } else {
  31. fun = gftoken.WithGCache()
  32. }
  33. return &sToken{
  34. GfToken: gftoken.NewGfToken(
  35. gftoken.WithCacheKey(opt.CacheKey),
  36. gftoken.WithTimeout(opt.Timeout),
  37. gftoken.WithMaxRefresh(opt.MaxRefresh),
  38. gftoken.WithMultiLogin(opt.MultiLogin),
  39. gftoken.WithExcludePaths(opt.ExcludePaths),
  40. fun,
  41. ),
  42. }
  43. }
  44. func init() {
  45. service.RegisterGToken(New())
  46. }