gpt4 book ai didi

go - 使用 Gin 访问中间件中的路由

转载 作者:IT王子 更新时间:2023-10-29 01:55:09 25 4
gpt4 key购买 nike

我的 Golang API 中有一个 user.save 路由(如下),可用于创建更新用户,具体取决于请求对象中是否提供了 id。该路由使用其他路由也使用的 auth 中间件。

api.POST("/user.save", auth(), user.Save())
api.POST("/user.somethingElse", auth(), user.SomethingElse())

这是我的中间件:

func auth() gin.HandlerFunc {
return func(c *gin.Context) {
//I would like to know here if user.save was the route called
//do authy stuff
}
}

我在想,如果我可以在 auth 中间件中检测到是否调用了 user.save 路由,那么我可以检查是否有一个 id 被包含并决定是继续还是返回。

最佳答案

您可以从授权处理程序中检查 url。实际请求在上下文中,因此很简单:

if c.Request.URL.Path == "/user.save" {
// Do your thing
}

另一种解决方案是参数化您的身份验证中间件,如下所示:

api.POST("/user.save", auth(true), user.Save())
api.POST("/user.somethingElse", auth(false), user.SomethingElse())

func auth(isUserSave bool) gin.HandlerFunc {
return func(c *gin.Context) {
if isUserSave {
// Do your thing
}
}
}

关于go - 使用 Gin 访问中间件中的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34440246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com