ratpack: реализация собственного PublicAddress для принудительного использования https - PullRequest
0 голосов
/ 26 июня 2018

Я был в почтовой ветке pac4j, обсуждая, почему URL-адрес перенаправления, который использует ratpack-pac4j, использует http, даже если исходный запрос страницы обслуживается через https.Я немного покопался, и похоже, что ratpack-pac4j использует InferringPublicAddress.Это работает для локальной разработки, но, поскольку мой хост эластичного боба прокси 443-80, ratpack-pac4j считает, что он закончился через http и использует http для URL перенаправления.Я хочу, чтобы этот вызов был по https, когда на сервере.

Я пытаюсь зарегистрировать пользовательский класс PublicAddress, который всегда возвращает http в режиме разработки, но https в производственном режиме:

        .registry(Guice.registry(b -> { 
            b
                .module(SessionModule.class)
                .module(ThymeleafModule.class, conf -> conf.templatesMode("LEGACYHTML5"))
                .add(PublicAddress.class, ForcedHttpsPublicAddress.create()); //PublicAddress.class, PublicAddress.inferred("https"));
        }))

...

static private class ForcedHttpsPublicAddress implements PublicAddress
{
    static ForcedHttpsPublicAddress create() {
        return new ForcedHttpsPublicAddress();
    }
    ForcedHttpsPublicAddress() {
    }
}

Но когда я вызываю ctx.get (PublicAddress.class), он по-прежнему возвращает InferringPublicAddress.Я неправильно регистрирую пользовательский PublicAddress?

1 Ответ

0 голосов
/ 06 января 2019

Получил помощь на форуме Ratpack.Мне нужно было связать это вместо того, чтобы добавить это.

.bind(PublicAddress.class, ForcedHttpsPublicAddress.class)
...