我在一个pac4j邮件线程上讨论了为什么即使原始页面请求通过https提供,重定向网址ratpack-pac4j所使用的重定向URL还是使用http。我做了一些挖掘,看来ratpack-pac4j正在使用InferringPublicAddress。这适用于本地开发,但是由于我的Elasticbean主机代理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错误?
答案 0 :(得分:0)
在Ratpack论坛上获得帮助。我需要绑定它而不是添加它。
.bind(PublicAddress.class, ForcedHttpsPublicAddress.class)