Pasar datos del middleware a los controladores
En su diseño, tiene middleware que procesa una solicitud entrante y controladores que devuelven un http.Handler . Desea pasar datos del middleware a los controladores, específicamente un token web JSON analizado desde el cuerpo de la solicitud.
Para lograr esto, puede utilizar el paquete de contexto de Gorilla:
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") }) }
En el middleware, analiza el cuerpo de la solicitud y almacena el JWT en el contexto de la solicitud. Luego, en el controlador, puede recuperar el JWT del contexto:
token := context.Get(r, "token")
Esto le permite evitar analizar el JWT nuevamente en sus controladores, lo cual es más eficiente.
Actualización:
El paquete de contexto Gorilla se encuentra actualmente en mantenimiento modo.
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") }) }
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3