middlewares.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package middlewares
  2. import (
  3. "git.sxidc.com/go-framework/baize/convenient/domain/auth/jwt_tools"
  4. "git.sxidc.com/go-framework/baize/convenient/domain/auth/user"
  5. "git.sxidc.com/go-framework/baize/framework/binding"
  6. "git.sxidc.com/go-framework/baize/framework/core/api"
  7. "git.sxidc.com/go-framework/baize/framework/core/api/response"
  8. "git.sxidc.com/go-framework/baize/framework/core/domain"
  9. "git.sxidc.com/go-framework/baize/framework/core/infrastructure"
  10. "github.com/dgrijalva/jwt-go/request"
  11. "github.com/pkg/errors"
  12. "net/http"
  13. )
  14. var dbSchema string
  15. func SetDBSchema(schema string) {
  16. dbSchema = schema
  17. }
  18. func Authentication() binding.Middleware {
  19. return func(c *api.Context, i *infrastructure.Infrastructure) {
  20. respFunc := response.SendMapResponse
  21. // 获取token
  22. token, err := request.AuthorizationHeaderExtractor.ExtractToken(c.Request)
  23. if err != nil {
  24. respFunc(c, http.StatusUnauthorized, nil, errors.New(err.Error()))
  25. c.Abort()
  26. return
  27. }
  28. // 校验token
  29. valid, _, err := jwt_tools.CheckJWT(token)
  30. if err != nil {
  31. respFunc(c, http.StatusUnauthorized, nil, errors.New(err.Error()))
  32. c.Abort()
  33. return
  34. }
  35. if !valid {
  36. respFunc(c, http.StatusUnauthorized, nil, errors.New("无效token"))
  37. c.Abort()
  38. return
  39. }
  40. // 获取用户信息
  41. userTableName := domain.TableName(simple.Schema, &user.Entity{})
  42. dbExecutor := i.DBExecutor()
  43. c.Next()
  44. }
  45. }