代码之家  ›  专栏  ›  技术社区  ›  voodoogiant

ratpack:实现一个自定义的publicaddress来强制https

  •  0
  • voodoogiant  · 技术社区  · 7 年前

    我在一个pac4j邮件线程上讨论了为什么ratpack-pac4j使用的重定向url使用http,即使原始页面请求是通过https服务的。我做了一些挖掘,看起来Ratpack-Pac4J正在使用推断的公共地址。这适用于本地开发,但是因为我的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。我登记的海关公共地址有误吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   voodoogiant    6 年前

    有关于Ratpack论坛的帮助。我需要绑定它而不是添加它。

    .bind(PublicAddress.class, ForcedHttpsPublicAddress.class)