token.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package middleware
  2. import (
  3. "gadmin/utility/serializer"
  4. "gadmin/utility/token"
  5. "github.com/gin-gonic/gin"
  6. "github.com/sirupsen/logrus"
  7. )
  8. // 路由白名单
  9. var whitelist = []string{
  10. "/api/gm/userRoles",
  11. }
  12. // Token 验证token
  13. func Token() gin.HandlerFunc {
  14. return func(c *gin.Context) {
  15. if isWhite(c.Request.URL.Path) {
  16. c.Next()
  17. return
  18. }
  19. t := token.GetAuthorization(c)
  20. if t == "" {
  21. c.JSON(200, serializer.CheckLogin())
  22. c.Abort()
  23. return
  24. }
  25. claims, err := token.ParseToken(t)
  26. if err != nil {
  27. logrus.Warningf("middleware token.ParseToken:%+v", err.Error())
  28. //c.JSON(200, serializer.Err(consts.CodeCheckLogin, err.Error(), nil)) // 会导致无法重新登录
  29. c.JSON(200, serializer.CheckLogin())
  30. c.Abort()
  31. return
  32. }
  33. //if os.Getenv("GIN_MODE") == "release" && claims.UserName == "mojun" {
  34. // c.JSON(200, serializer.CheckLogin())
  35. // c.Abort()
  36. // return
  37. //}
  38. c.Set("user", claims)
  39. c.Next()
  40. return
  41. }
  42. }
  43. func isWhite(path string) bool {
  44. for _, v := range whitelist {
  45. if path == v {
  46. return true
  47. }
  48. }
  49. return false
  50. }