Daten von Middleware an Handler übergeben
In Ihrem Design verfügen Sie über Middleware, die eine eingehende Anfrage verarbeitet, und Handler, die einen http.Handler zurückgeben . Sie möchten Daten von der Middleware an die Handler übergeben, insbesondere ein JSON-Web-Token, das aus dem Anforderungstext geparst wird.
Um dies zu erreichen, können Sie das Kontextpaket von Gorilla verwenden:
import ( "github.com/gorilla/context" ) func Middleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // Middleware operations // Parse body/get token. context.Set(r, "token", token) next.ServeHTTP(w, r) }) } func Handler() http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { token := context.Get(r, "token") }) }
In der Middleware analysieren Sie den Anfragetext und speichern das JWT im Anfragekontext. Dann können Sie im Handler das JWT aus dem Kontext abrufen:
token := context.Get(r, "token")
Dadurch können Sie vermeiden, das JWT erneut zu analysieren Ihre Handler, was effizienter ist.
Update:
Das Gorilla-Kontextpaket befindet sich derzeit in der Wartung mode.
func Middleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // Middleware operations // Parse body/get token. ctx := context.WithValue(r.Context(), "token", token) next.ServeHTTP(w, r.WithContext(ctx)) }) } func Handler() http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { token := r.Context().Value("token") }) }
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3