簡體   English   中英

使用 golang 中的 gin 包為特定路由表達中間件?

[英]express middleware for specific route using gin package in golang?

我為它成功運行的路由制作了一個middleware ,但有一個小問題是它將適用於所有路由,包括signuplogin 我想社交所有用戶都將訪問這兩條路線的signuplogin路線。 以下是我正在使用的代碼:-

路由

/*Signup Route */
Route{"SaveUser", "POST", "/signup", controller.SaveUser},

/*Login Route*/
Route{"LoginUser", "POST", "/login", controller.Login},

/* All Customers Routes */
Route{"SaveCustomers", "POST", "/customer", controller.SaveCustomers},
Route{"GetCustomers", "GET", "/customer", controller.GetCustomers},
Route{"GetCustomer", "GET", "/customer/:id", controller.GetCustomer},
Route{"UpdateCustomers", "PUT", "/customer/:id", controller.UpdateCustomers},

func NewRouter() {
  router := gin.Default()
  router.Use(require("./login"))
  router.Use(JWTAuthMiddleware())
  v1 := router.Group("/api/v1")
  for _, route := range routes {
    switch route.Method {
    case "GET":
        v1.GET(route.Pattern, route.HandlerFunc)
    case "POST":
        v1.POST(route.Pattern, route.HandlerFunc)
    case "PUT":
        v1.PUT(route.Pattern, route.HandlerFunc)
    case "DELETE":
        v1.DELETE(route.Pattern, route.HandlerFunc)
    default:
        v1.GET(route.Pattern, func(c *gin.Context) {
            c.JSON(200, gin.H{
                "result": "Specify a valid http method with this route.",
            })
        })
    }
 }
 router.Run(":8080")
}

func JWTAuthMiddleware() gin.HandlerFunc {
  return func(c *gin.Context) {
    controller.ValidateToken(c)
    c.Next()
  }
}

當我點擊 url /login ,登錄 API 將運行並檢查用戶是否獲得授權。 但中間件代碼也適用於注冊和登錄。 我將如何社交登錄 api 和注冊 api。 我用谷歌搜索了它,但我發現我不明白的東西有人可以幫助我。 提前謝謝你。

來自: https : //github.com/gin-gonic/gin#using-middleware

// Per route middleware, you can add as many as you desire.
r.GET("/benchmark", MyBenchLoggerMiddleware(), benchEndpoint)

https://github.com/gin-gonic/gin#using-middleware展示了如何將一組特定的 url 與授權中間件一起使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM