6

我们在 Squid 代理后面有一个带有 Spring Security 的 Spring 3 应用程序。问题是 Spring 只知道内部 squid url,因此在成功登录后example.com/login而不是重定向到example.com/home它重定向到internal.example.com.

有谁知道如何处理这种情况?

我的配置:

<security:http use-expressions="true" auto-config="true">
    <security:intercept-url pattern="/" access="hasRole('ROLE_ANONYMOUS') or hasRole('ROLE_GENERAL_ADMINISTRATION')"/>
    <security:intercept-url pattern="/**" access="hasRole('ROLE_GENERAL_ADMINISTRATION')"/>
    <security:intercept-url pattern="/static/**" filters="none"/>
    <security:logout invalidate-session="true" logout-url="/logout" logout-success-url="/"/>
    <security:form-login login-page="/" default-target-url="/dashboard"/>
    <security:anonymous/>
</security:http>

编辑:

就我而言,管理员错误地设置了 mod_jk,因此 squid 和上述配置一切正常。

4

2 回答 2

1

我在 Apache HTTP Reverse 代理和一些愚蠢的应用程序后面有一个带有 Spring 安全性的 Web 应用程序,它们的行为就像你上面描述的那样,我们的解决方案是使用 mod_rewrite 模块

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

无论如何,您所说的很奇怪,因为正确的 Spring 安全配置应该使用相对 url,并且在 url 中使用天气、内部或外部主机无关紧要。

如果你配置 URL

 <security:form-login login-page="//login.jsp" login-processing-url="/login" always-use-default-target="true"/>

应该在内部或外部 URL 中表现相同,这听起来像是配置问题。

于 2011-05-31T16:57:51.513 回答
0

我有一个类似的问题,在我的(当前是 PHP)应用程序前面有一个 nginx 反向代理,但其他人建议修复 URL 的工作在代理上完成,例如http://www.informit.com/articles/article .aspx?p=169534

响应标头重新映射。响应标头可能包含明确指向内容 Web 服务器的信息。一个示例是与重定向一起使用的“Location:”标头。反向代理服务器重新映射“位置:”字段,用自己的地址替换对内容 Web 服务器的引用。

还有一个相关问题的答案:“Redirect to https for some services using spring”

于 2013-07-10T14:12:12.870 回答