middleware.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package router
  2. import (
  3. "context"
  4. "net/http"
  5. "github.com/gin-gonic/gin"
  6. "github.com/mhaya/game/game_cluster/internal/constant"
  7. "github.com/mhaya/game/game_cluster/internal/mdb"
  8. )
  9. func Auth() gin.HandlerFunc {
  10. return func(c *gin.Context) {
  11. tokenString := c.GetHeader("Token")
  12. if tokenString == "" {
  13. c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{
  14. "msg": "token is empty",
  15. })
  16. return
  17. }
  18. result, err := mdb.RDB.Get(context.Background(), tokenString).Result()
  19. if err != nil {
  20. return
  21. }
  22. if result == "" {
  23. c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{
  24. "msg": "token is invalid",
  25. })
  26. return
  27. }
  28. // 获取请求URL
  29. url := c.Request.URL.Path
  30. s, _ := mdb.RDB.HGet(context.Background(), "admin::token::"+tokenString, url).Result()
  31. admin, _ := mdb.RDB.HGet(context.Background(), "admin::token::"+tokenString, constant.AdminAccess).Result()
  32. // 检查是否有权限
  33. if s == "" && admin == "" {
  34. c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{
  35. "msg": "token is no auth",
  36. })
  37. return
  38. }
  39. c.Next()
  40. }
  41. }