我们正在开发“盒子”网络产品,所以我无法预见应用程序的部署环境。此应用程序使用 spring-security。但似乎如果 Tomcat 不将应用程序放置在根目录下,则以下配置将失败:
<sec:http auto-config="true" >
....
<sec:form-login login-page="/ui/Login" />
以下推荐:https://stackoverflow.com/a/6934712/149818使用
#{servletContext.contextPath}
不起作用。用户而不是 http://foo/myApp/ui/Login被重定向到 http://foo/ui/Login
所以我的问题是
- 如何让#{servletContext.contextPath} 存活
- 或者如何强制 spring-security 识别实际的 contextPath
最佳答案
非常感谢@Luke Taylor 和@axtavt - 我的错误是在
<sec:http auto-config="true" use-expressions="true">
<sec:intercept-url pattern="/ui/Login"
access="IS_AUTHENTICATED_ANONYMOUSLY"/>
当“/”出现时 - #{servletContext.contextPath} 开始正常工作。
关于tomcat - 在 spring security (3.0.x) 中指定变量上下文路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8445769/