2012-10-03 34 views
0

基本問題是我們需要運行我們的戰爭作爲ROOT.war以獲得正確的彈簧安全的上下文路徑?請求上下文路徑grails彈簧安全

背景:

我們有一個使用彈簧安全插件Grails應用。它由nginx代理並且war不作爲tomcat中的ROOT.war運行。

Web site: https://www.example.com 
Login: https://www.example.com/login 

戰爭的名字是foo.war和nginx的被請求代理到http://tomcat:8080/foo

春季安全使用:${request.contextPath}

我們是否安裝該應用程序爲ROOT.war還是有上下文路徑我們可以修改Grails中的變量spring安全嗎?

春季安全驗證cookie正在路徑中設置爲/ foo ...而我們的會話管理無法正常工作。

+0

在我的經驗中,contextPath工作得很好。我也在config.groovy中設置了這個設置:grails.app.context ='/ foo' –

+0

你有一個web應用程序,用戶在'/'和戰爭將是foo.war? – chrislovecnm

+0

這是行不通的:( – chrislovecnm

回答

1

@ Ian-Roberts是正確的。

您不能只使用grails.app.context = '/foo'grails.app.context = '/'。我看起來Tomcat正在搞亂應用程序上下文,如果你必須將它作爲ROOT.war運行。

說明:

  • 你確實需要在Config.groovy中grails.app.context = '/'爲了做Grails的運行程序
  • Grails的戰爭ROOT.war
  • 複製WAR文件到ROOT.war在你的tomcat webapps文件夾。
  • 在$ TOMCAT_CONF /卡塔利娜/創建的ROOT.xml文件

的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不會擴展它,並且所有地獄都會爆發:)