Обработчик Vertx Вызывается дважды для аутентификации и заголовков - PullRequest
0 голосов
/ 12 апреля 2020

При каждом запросе от почтальона обработчик Vertx вызывался дважды.

У меня есть два обработчика, которые будут вызываться до того, как вызов придет к обработчику обработки запроса. Один для установки заголовка и один для аутентификации пользователя, но оба звонят дважды.

@Log4j2
public class BaseResponseHandler implements Handler<RoutingContext> {

    @Override
    public void handle(RoutingContext context) {
        HttpServerResponse response = context.response();
        log.info("Inside BaseResponse Handler!");
        response.putHeader("Content-Security-Policy",
                "script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'")
                // do not allow proxies to cache the data
                .putHeader("Cache-Control", "no-store, no-cache")
                .putHeader("X-Content-Type-Options", "nosniff")
                .putHeader("Strict-Transport-Security", "XYZ")
                .putHeader("X-Download-Options", "XYZ")
                .putHeader("X-XSS-Protection", "XYZ")
                .putHeader("X-FRAME-OPTIONS", "XYZ");

        response.setChunked(true);
        context.next();
    }

}

Фрагмент, который я имею в httpServerVerticle

router.route().order(1).handler(new BaseResponseHandler());
router.route().order(0).handler(new AuthenticationHandler()::authenticate);

В логах я получаю

10:09:54.214 [vert.x-eventloop-thread-4] [%vcl] DEBUG *.handlers.TokenHandler - User is Authenticated : io.vertx.ext.auth.jwt.impl.JWTUser@7855ebfa 
10:09:54.215 [vert.x-eventloop-thread-4] [%vcl] INFO  *.handlers.BaseResponseHandler - Inside BaseResponse Handler!
10:09:54.243 [vert.x-eventloop-thread-4] [%vcl] DEBUG *.handlers.TokenHandler - User is Authenticated : io.vertx.ext.auth.jwt.impl.JWTUser@5fb3053a 
10:09:54.243 [vert.x-eventloop-thread-4] [%vcl] INFO  *.handlers.BaseResponseHandler - Inside BaseResponse Handler!

1 Ответ

0 голосов
/ 12 апреля 2020

Из вашего журнала я вижу 2 идентификатора экземпляра объекта пользователя (из хеш-кода после имени класса), поэтому я предполагаю, что вы действительно видите 2 запроса. Это может быть предварительная проверка, а вторая - реальный запрос.

Попробуйте войти в систему методом http. Если первый вариант - ОПЦИИ, то это действительно проверка перед полетом.

...