Comment partager des données entre middleware et gestionnaires
Vos gestionnaires renvoient des gestionnaires HTTP, et votre middleware accepte les gestionnaires HTTP et les appelle après avoir effectué son opérations. Pour transmettre les données du middleware aux gestionnaires, vous pouvez exploiter le package de contexte.
import ( "context" "github.com/gorilla/mux" ) func Middleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // Middleware operations // Parse body/get token. token := parseToken(r) 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") // Continue with handler logic }) }
Cette approche évite d'analyser le JWT à la fois dans le middleware et dans le gestionnaire, garantissant ainsi une utilisation efficace des ressources. Notez que vous pouvez transmettre n'importe quel type de données en modifiant le type de l'argument Value dans r.Context().Value().
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!