ratpack:实施自定义 PublicAddress 以强制使用 https
ratpack: implementing a custom PublicAddress to force https
我在 pac4j 邮件线程上讨论为什么即使原始页面请求是通过 https 提供的,重定向 url ratpack-pac4j 使用的也是 http。我做了一些挖掘,看起来 ratpack-pac4j 正在使用 InferringPublicAddress。这适用于本地开发,但因为我的 elasticbean 主机代理 443 到 80,ratpack-pac4j 认为它是通过 http 并使用 http 进行重定向 url。我希望在服务器上通过 https 调用此调用。
我正在尝试注册一个自定义 PublicAddress class,在开发模式下总是 returns 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?
在 Ratpack 论坛上获得了帮助。我需要绑定它而不是添加它。
.bind(PublicAddress.class, ForcedHttpsPublicAddress.class)
我在 pac4j 邮件线程上讨论为什么即使原始页面请求是通过 https 提供的,重定向 url ratpack-pac4j 使用的也是 http。我做了一些挖掘,看起来 ratpack-pac4j 正在使用 InferringPublicAddress。这适用于本地开发,但因为我的 elasticbean 主机代理 443 到 80,ratpack-pac4j 认为它是通过 http 并使用 http 进行重定向 url。我希望在服务器上通过 https 调用此调用。
我正在尝试注册一个自定义 PublicAddress class,在开发模式下总是 returns 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?
在 Ratpack 论坛上获得了帮助。我需要绑定它而不是添加它。
.bind(PublicAddress.class, ForcedHttpsPublicAddress.class)