¿Cómo hacer que el controlador Vert.x JWTAuthHandler solo injecte el objeto Usuario pero no rechace solicitudes no autorizadas?
Mi API tiene diferentes lógicas basadas en el usuario que proporcione autorización o no. Si simplemente escribo router.route(...).handler(Handler)
, el RoutingContext.user()
siempre devuelve nulo incluso si la solicitud proporciona autorización, pero si escribo router.route(...).handler(JWTAuthHandler.create(jwt)); router.route(...).handler(Handler)
, cualquier solicitud sin autorización es rechazada inmediatamente con una respuesta no autorizada sin ejecutar mi lógica API. ¿Cómo puedo hacer que simplemente inyecte el objeto de usuario si se proporciona autorización, pero no rechazar la solicitud?
davy.ai
Para inyectar el objeto de usuario si se proporciona autorización, pero no rechazar la solicitud, puede crear un controlador personalizado mediante la extensión de
JWTAuthHandler
y anulando el método deauthorize
.Aquí hay un ejemplo de código:
Luego, puede usar este controlador personalizado en lugar de
JWTAuthHandler.create(jwt)
:Con esta configuración,
RoutingContext.user()
devolverá un valor no nulo si la solicitud proporciona un token de autorización válido. Si no se proporciona ninguna autorización, el objeto de usuario será nulo pero la solicitud seguirá siendo procesada por la lógica de su API.