请求上下文路径grails spring security

时间:2012-10-03 19:20:29

标签: tomcat grails nginx spring-security

基本问题是我们是否需要以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 ...并且我们的会话管理无法正常工作。

1 个答案:

答案 0 :(得分:1)

@ Ian-Roberts是对的。

您不能只使用grails.app.context = '/foo'grails.app.context = '/'。我看来Tomcat正在搞乱应用程序上下文,因此你必须以ROOT.war运行它。

说明:

  • 您需要在Config.groovy中grails.app.context = '/'才能执行grails run-app
  • grails war ROOT.war
  • 将您的war文件复制到tomcat webapps文件夹中的ROOT.war。
  • 创建ROOT.xml文件

$ 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不会扩展它,所有地狱都将爆发:)