Ich lerne, Middleware mit dem Gin-Framework zu verwenden, bin aber auf ein Problem gestoßen
Ich möchte, dass meine test 函数
仅在满足我的 func tokenauthmiddleware
Anfragen nur im Postman
Aber meine Testfunktion wird unabhängig davon aufgerufen, ob mein Körper ausgefüllt ist oder nicht (mit oder ohne Authentifizierung). Wie kann ich das beheben? Ich möchte, dass meine Testfunktion erst angezeigt wird, nachdem ich die mittlere Ebene durchlaufen habe
Ich habe so etwas versucht:
package main import ( "log" "net/http" "os" "github.com/gin-gonic/gin" "github.com/joho/godotenv" ) func TokenAuthMiddleware() gin.HandlerFunc { err := godotenv.Load(".env") if err != nil { log.Fatal("Erro ao ler variaveis de ambiente") } requiredToken := os.Getenv("API_TOKEN") if requiredToken == "" { log.Fatal("Por favor, defina a variavel API_TOKEN") } return func(c *gin.Context) { token := c.Request.FormValue("api_token") if token == "" { c.JSON(http.StatusBadRequest, gin.H{"message": "Token deve ser preenchido"}) } else if token != requiredToken { c.JSON(http.StatusBadRequest, gin.H{"message": "Token invalido"}) } c.Next() } } func Teste(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "sucess": "so beautiful", }) } func main() { api := gin.New() v1 := api.Group("v1") v1.Use(TokenAuthMiddleware()) v1.GET("/", Teste) api.Run() }
Vielen Dank im Voraus
Sie immer rufen c.next()
an und die Middleware-Kette oder der Ausführungshandler werden weiter verarbeitet. Sie müssen es vermeiden, es aufzurufen, wenn das Token falsch ist.
func TokenAuthMiddleware() gin.HandlerFunc { err := godotenv.Load(".env") if err != nil { log.Fatal("Erro ao ler variaveis de ambiente") } requiredToken := os.Getenv("API_TOKEN") if requiredToken == "" { log.Fatal("Por favor, defina a variavel API_TOKEN") } return func(c *gin.Context) { token := c.Request.FormValue("api_token") if token == "" { c.JSON(http.StatusBadRequest, gin.H{"message": "Token deve ser preenchido"}) return } if token != requiredToken { c.JSON(http.StatusBadRequest, gin.H{"message": "Token invalido"}) return } c.Next() } }
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Middleware für die Autorisierung – Gin Gonic Go. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!