【问题标题】:Spring security: using relative pathSpring 安全性:使用相对路径
【发布时间】:2012-08-06 06:22:09
【问题描述】:

我有一个名为 test.war 的应用程序。

由于我的服务器上安装了 Apache,我必须为 Tomcat 应用程序使用另一个端口号,因此在部署此应用程序后,该应用程序可在 domain.com:8080/test/ 获得。

我决定创建一个子域以便从 url 中删除那个丑陋的 8080,所以我设置了像 described here 这样的服务器。所以现在 test.domain.com 指的是 domain.com:8080/test/。

除了一个问题外,一切似乎都很好——因为我的应用程序不是 ROOT.war 并且我正在使用 spring:url 函数,应用程序中的每个 url 都被转换为 /test/bla-bla。所以我删除了那个功能。但是 spring security 仍然存在问题,因为它仍然会转换相对于应用程序名称的 url,即 /test/bla-bla。

我该如何解决这个问题?

谢谢

UPD:我不想将其部署为 ROOT 应用程序,因为我有两个或三个这样的应用程序,我想为每个应用程序创建一个子域

【问题讨论】:

    标签: java spring tomcat spring-security


    【解决方案1】:

    Spring Security 不会“翻译” URL。事实上,这并不是 Spring Security 特有的。任何执行重定向的应用程序都会遇到类似的问题。如果要隐藏代理后面的应用程序的上下文路径,则需要在代理处重写 URL。

    我建议您阅读 Tomcat Generic Proxy Howto 和 URL 重写部分,因为它专门解决了这个问题。

    【讨论】:

    • 感谢您的回复。我知道我可以代理 Tomcat 的请求,但是如果我有几个应用程序怎么办?其中之一我可以(通过代理)重定向到服务器的根目录。另一个在重定向期间仍将使用上下文路径。所以据我了解,唯一的解决方案是使用 Tomcat 的两个实例
    • 不,应该不需要使用多个 tomcat 实例。重写规则与 tomcat 实例无关,应用程序应该不知道它们在代理后面运行。重写规则是 apache 代理配置的一部分。
    • 你能具体说明你的意思吗?我使用了代理,解决了子域重定向的问题。但是我的应用程序仍然为我用 spring:url 标签 描述的任何 url 添加了一个应用程序名称
    • 我认为 Tomcat howto 非常清楚地解释了所有问题。如果 Spring Security 存在特定问题,如果您解释您正在谈论的 URL 以及它们是否是重定向、嵌入在 JSP 中或其他什么,它可能会有所帮助。
    猜你喜欢
    • 2013-04-15
    • 2016-01-21
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 2015-09-29
    • 2019-02-25
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多