基本问题是我们是否需要以ROOT.war运行我们的战争才能通过Spring安全性来确定上下文路径?
背景:
我们有一个使用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中的上下文路径变量吗?
在路径中使用/ foo设置spring security auth cookie ...并且我们的会话管理无法正常工作。
答案 0 :(得分:1)
@ Ian-Roberts是对的。
您不能只使用grails.app.context = '/foo'
或grails.app.context = '/'
。我看来Tomcat正在搞乱应用程序上下文,因此你必须以ROOT.war运行它。
说明:
grails.app.context = '/'
才能执行grails run-app $ TOMCAT_CONF / Catalina / localhost
中的ROOT.xml<Context path="" antiResourceLocking="false" privileged="true" >
<Resource name="jdbc/****x"
auth="Container"
type="javax.sql.DataSource"
maxActive="300"
edited :)
/>
<Resource name="jdbc/***"
auth="Container"
edited :)
/>
</Context>
因为我收到了URL映射错误。哦,不要试图在AppBase之外运行战争,因为tomcat不会扩展它,所有地狱都将爆发:)