Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Accessing route in middleware using Gin

Tags:

go

go-gin

I have a user.save route (below) in my Golang API that can be used to create and update a user depending on whether an id was provided in the request object. The route uses the auth middleware which other routes do too.

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

Here is my middleware:

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
    }
}

I'm thinking that if I can detect in the auth middleware whether the user.save route was called I can then check to see if an id was included and decide whether to continue or return.

like image 672
tommyd456 Avatar asked Apr 26 '26 13:04

tommyd456


1 Answers

You could check the url from the auth handler. The actual request is on the context, so it's as easy as:

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

Another solution is to parameterize your auth middleware, something like this:

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
        }
    }
}
like image 84
Alex Guerra Avatar answered Apr 29 '26 06:04

Alex Guerra