C# .NET 5.0 MVC JWT Middleware autorización de encabezado.
El problema es que cuando inicio sesión a través del método de publicación del controlador MVC, obtengo el token JWT y lo guardo en el encabezado de autorización de HttpContext, el código salta a la capa intermedia donde puedo ver el token en el contexto, pero tan pronto como las funciones de invocación llaman al delegado _next(context), ya no hay más encabezados de autorización. ¿Cómo puedo resolver esto? ¿Existe alguna buena práctica para pasar el token desde el controlador MVC hasta la capa intermedia para poder adjuntar la cuenta al contexto?
Muchas gracias.
davy.ai
Solución para pasar el token JWT desde el controlador MVC hasta el Middleware
El problema aquí es que se pierde el encabezado de autorización cuando la solicitud pasa a través del middleware. Para resolver esto, necesitas crear un middleware personalizado que recupere el token JWT del encabezado de autorización y lo adjunte al HttpContext actual. Aquí tienes los pasos para implementar esta solución:
IMiddleware
. Esta interfaz tiene un único métodoTask InvokeAsync(HttpContext context, RequestDelegate next)
que debes implementar.InvokeAsync
del middleware, recupera el token JWT del encabezadoAuthorization
utilizando el métodocontext.Request.Headers.TryGetValue("Authorization", out var token)
.context.Items["token"] = token
.await next(context)
.context.Items["token"]
.Siguiendo estos pasos, puedes pasar el token JWT desde el controlador MVC hasta el Middleware y adjuntarlo al HttpContext. Este enfoque es una buena práctica porque garantiza que el token esté disponible en cualquier middleware o controlador posterior en la canalización.