Heim > Backend-Entwicklung > Golang > So übergeben Sie Parameter von der Middleware an den Controller

So übergeben Sie Parameter von der Middleware an den Controller

王林
Freigeben: 2024-02-13 17:15:10
nach vorne
504 Leute haben es durchsucht

So übergeben Sie Parameter von der Middleware an den Controller

php-Editor Baicao stellt Ihnen vor, wie Sie Parameter von der Middleware an den Controller übergeben. Während des Entwicklungsprozesses müssen wir häufig einige Parameter in der Middleware abrufen und diese Parameter dann zur weiteren Verarbeitung an den Controller übergeben. Um diese Funktionalität zu erreichen, können wir Parameter an den Controller übergeben, indem wir die with-Methode des $request-Objekts in der Middleware verwenden. Zuerst müssen wir die Parameter in der Middleware abrufen, dann die with-Methode des $request-Objekts verwenden, um die Parameter zum Anforderungsobjekt hinzuzufügen, und schließlich diese Parameter über die Eingabemethode des $request-Objekts im Controller abrufen. Auf diese Weise haben wir die Parameter erfolgreich von der Middleware an den Controller übergeben. Diese Methode ist einfach und leicht umzusetzen und entspricht unseren Bedürfnissen. Ich hoffe, diese Methode hilft Ihnen!

Frageninhalt

Ich baue eine Web-API mit dem Echo Labstack-Framework. Ich habe eine Middleware in meinem Weg, um die Benutzerauthentifizierung zu überprüfen, aber dann habe ich Probleme bei der Übergabe der Daten an den Controller und kann keine relevanten Informationen in Google und SO finden.

route.go

func Routes(e *echo.Echo) {
    e.(middlewareAuthorise)
    user := e.Group("/user")
    user.GET("/profile", controllers.UserProfile)
}

func middlewareAuthorise(next echo.HandlerFunc) echo.HandlerFunc {
    return func(c echo.Context) error {
        // Do some authentication here with access token and get user ID
        auth := controllers.Auth(c, 1)
        if auth["status"] != 200 {
            return c.JSON(401, map[string]any{"status": 401})
        }

        user_id := auth["user_id"]
        // I want to pass user_id to my controllers
        return next(c, user_id)
    }
}
Nach dem Login kopieren

controllers.go

func UserProfile(c echo.Context) error {
    // I want to get the user_id here from middleware
    return c.JSON(200, map[string]any{
        "user_id": user_id,
    })
}
Nach dem Login kopieren

Ich habe den ganzen Tag mehrere Kombinationen gesucht und ausprobiert, kann aber nichts finden, was funktioniert. Wie kann ich Parameter von der Middleware am effizientesten an meinen Controller übergeben?

Problemumgehung

Sie können die Methode SetGet des Kontexts verwenden.

Das obige ist der detaillierte Inhalt vonSo übergeben Sie Parameter von der Middleware an den Controller. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage