token.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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/model"
  13. )
  14. type IGfToken interface {
  15. GenerateToken(ctx context.Context, key string, data interface{}) (keys string, err error)
  16. Middleware(group *ghttp.RouterGroup) error
  17. ParseToken(r *ghttp.Request) (*gftoken.CustomClaims, error)
  18. }
  19. type gfTokenImpl struct {
  20. *gftoken.GfToken
  21. }
  22. var gT = gfTokenImpl{
  23. GfToken: gftoken.NewGfToken(),
  24. }
  25. func GfToken(options *model.TokenOptions) IGfToken {
  26. if options.CacheModel == model.CacheModelRedis {
  27. gT.GfToken = gftoken.NewGfToken(
  28. gftoken.WithCacheKey(options.CacheKey),
  29. gftoken.WithTimeout(options.Timeout),
  30. gftoken.WithMaxRefresh(options.MaxRefresh),
  31. gftoken.WithMultiLogin(options.MultiLogin),
  32. gftoken.WithExcludePaths(options.ExcludePaths),
  33. gftoken.WithGRedis(),
  34. )
  35. } else {
  36. gT.GfToken = gftoken.NewGfToken(
  37. gftoken.WithCacheKey(options.CacheKey),
  38. gftoken.WithTimeout(options.Timeout),
  39. gftoken.WithMaxRefresh(options.MaxRefresh),
  40. gftoken.WithMultiLogin(options.MultiLogin),
  41. gftoken.WithExcludePaths(options.ExcludePaths),
  42. )
  43. }
  44. return IGfToken(&gT)
  45. }