Spring 3安全性和相对重定向URL

时间:2011-05-31 15:34:57

标签: java spring spring-security squid

我们在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和上面的配置。

2 个答案:

答案 0 :(得分:1)

我正在使用Apache HTTP Reverse代理后面的Spring安全性的Web应用程序和一些愚蠢的应用程序,其行为与您上面描述的一样,我们的解决方案是使用 mod_rewrite模块

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

无论如何,你说的是非常奇怪的,因为正确的Spring安全配置应该使用相对URL,并且无论天气如何,内部或外部主机都在url中使用。

如果您配置网址

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

在内部或外部URL中的行为应该相同,这听起来像配置中的问题。

答案 1 :(得分:0)

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

  

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

也是相关问题的答案:"Redirect to https for few services using spring"