auth.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package auth
  2. import (
  3. "context"
  4. "github.com/dgrijalva/jwt-go"
  5. "go.uber.org/dig"
  6. "yx-dataset-server/app/errors"
  7. "yx-dataset-server/library/auth/store/redis"
  8. "yx-dataset-server/library/utils"
  9. )
  10. func InitAuth(ctx context.Context, container *dig.Container) error {
  11. var opts []Option
  12. opts = append(opts, SetExpired(utils.GetConfig("jwt.expired").Int()))
  13. opts = append(opts, SetSigningKey([]byte(utils.GetConfig("jwt.signing_key").String())))
  14. opts = append(opts, SetKeyfunc(func(t *jwt.Token) (interface{}, error) {
  15. if _, ok := t.Method.(*jwt.SigningMethodHMAC); !ok {
  16. return nil, errors.ErrInvalidToken
  17. }
  18. return []byte(utils.GetConfig("jwt.signing_key").String()), nil
  19. }))
  20. switch utils.GetConfig("jwt.signing_method").String() {
  21. case "HS256":
  22. opts = append(opts, SetSigningMethod(jwt.SigningMethodHS256))
  23. case "HS384":
  24. opts = append(opts, SetSigningMethod(jwt.SigningMethodHS384))
  25. case "HS512":
  26. opts = append(opts, SetSigningMethod(jwt.SigningMethodHS512))
  27. }
  28. store := redis.NewStore(&redis.Config{
  29. Addr: utils.GetConfig("redis.addr").String(),
  30. Password: utils.GetConfig("redis.password").String(),
  31. DB: utils.GetConfig("jwt.redis_db").Int(),
  32. KeyPrefix: utils.GetConfig("redis.redis_prefix").String(),
  33. })
  34. return container.Provide(func() Auther { return New(store, opts...) })
  35. }