如何使Spring Boot + Security应用程序重定向主机相关

时间:2014-12-07 17:37:28

标签: spring-security spring-boot thymeleaf

我在apache实例后面的tomcat中运行了一个应用程序。来自apache的请求通过mod_rewrite代理,因为这可以在.htaccess中配置,而且我无法访问vhost-configuration(甚至没有安装mod_jk)。

.htaccess如下所示:

RewriteRule ^/?my-app/(.*)$ http://localhost:8080/my-app/$1 [P]

Thymeleaf很好地将上下文名称附加到所有网址,并生成相对的内容,例如/my-app/relative/path(因此没有http://hostname - 部分)通过HTML,这在此设置中完美运行。

不幸的是,只要我使用Spring MVC重定向某些东西......

@RequestMapping("/redirect-to-relative-path")
public String redirect() {
    return "redirect:/relative/path";
}

...用户被重定向到http://localhost:8080/my-app/relative/path而非/my-app/relative/path,这对外部用户无效。

此外,Spring Security会将尚未授权的用户重定向到http://localhost:8080/my-app/login,而不仅仅是/my-app/login

我知道我可以使用完整的网址重定向到,但这应该是动态的。

使框架重定向到相对URL而不是附加主机名的最佳(spring-boot-)方法是什么? (......基本上就像Thymeleaf一样)

1 个答案:

答案 0 :(得分:0)

协议标准规定重定向URL应该(必须?)是绝对的。

尝试在Tomcat配置中设置proxyNameproxyPort

<Connector port="8080" ... proxyName="www.mycompany.com" proxyPort="80"/>

这些应该是Apache实例的公共属性。