0

基本的な質問は、Springセキュリティでコンテキストパスを正しくするために、戦争をROOT.warとして実行する必要があるかどうかです。

バックグラウンド:

SpringSecurityプラグインを使用している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にコンテキストパス変数がありますか?

春のセキュリティ認証Cookieはパスに/fooが設定されており、セッション管理が正しく機能していません。

4

1 に答える 1

1

@Ian-Robertsは正しいです。

grails.app.context = '/foo'またはだけを使用することはできませんgrails.app.context = '/'。Tomcatがアプリケーションコンテキストをいじっているようです。ROOT.warとして実行する必要があります。

指示:

  • grails.app.context = '/'grails run-appを実行するには、Config.groovyが必要です。
  • grails war ROOT.war
  • warファイルをtomcatwebappsフォルダーの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はそれを拡張せず、すべての地獄が勃発するからです:)

于 2012-10-03T23:05:36.227 に答える