【发布时间】:2012-09-24 18:50:47
【问题描述】:
基本问题是我们是否需要以 ROOT.war 的身份运行我们的战争,才能通过 Spring Security 获得正确的上下文路径?
背景:
我们有一个使用 spring 安全插件的 grails 应用程序。它由 nginx 代理,并且战争没有在 tomcat 中作为 ROOT.war 运行。
Web site: https://www.example.com
Login: https://www.example.com/login
战争名称是 foo.war 并且 nginx 正在将请求代理到 http://tomcat:8080/foo
Spring 安全正在使用:${request.contextPath}
我们是将应用程序安装为 ROOT.war 还是 grails spring security 中有一个我们可以修改的上下文路径变量?
spring security auth cookie 是在路径中使用 /foo 设置的......并且我们的会话管理无法正常工作。
【问题讨论】:
-
根据我的经验,contextPath 工作得很好。我也在 config.groovy 中设置了这个:grails.app.context = '/foo'
-
你有一个网络应用程序,其中用户在“/”和战争将是 foo.war?
-
我从来没有遇到过前端和后端上下文路径不同的情况。如果您需要在同一个 tomcat 中运行多个 ROOT webapps,您可以在 tomcat 端使用虚拟主机来执行此操作,只需确保前端服务器通过正确的 Host 标头。
标签: tomcat grails nginx spring-security