2016-04-27 7 views
1

Ich habe eine Anwendung, in der ich versuche, externe Konfigurationen zu implementieren. Dieser Teil funktioniert gut. Es scheint jedoch, dass einige der Konfigurationseinstellungen verloren gehen.grails.app.context ist verloren nach dem Frühling Sicherheitsabmeldung

ich diese Einstellung bin mit:

grails.app.context = "/${appName}" 

appName in der application.properties-Datei definiert ist, und funktionierte gut.

wie oben erwähnt extensionierte ich meine Datenquelle und grails.serverURL Einstellungen.

Nun, wenn ich meinen Abmeldelink klicken werde ich auf http umgeleitet: // myapplication/[:]/j_spring_security_logout

kann ich ersetzen die [:] mit dem Kontext und es nimmt mich auf die richtige URL (nach dem Abmelden), aber wenn ich versuche, mich wieder in die Anwendung einzuloggen, bekomme ich diese URL.

http: // myapplication/[:] anstelle der Standard-Login-URL.

BEARBEITEN nachdem einige println-Anweisungen zu meiner Config.groovy-Datei hinzugefügt wurden. Es scheint, die Config.groovy-Datei 3 Mal zu laden. Die ersten beiden Male sehe ich, was ich zu sehen erwarte, das dritte Mal, wenn es den Kontext auf [:] setzt.

Warum lädt es die Konfiguration dreimal, und was ist das dritte Mal, dass meine Einstellungen verloren gehen?

Antwort

1

Um meine eigene Frage zu beantworten. Nach vielem Debugging und Haarziehen fand ich meine Antwort. Es war nicht so, dass der Kontext nach dem Abmelden verloren ging. Die Anwendung hat nie wirklich die richtigen Einstellungen erhalten. (in einem Sinn). Es gibt mehrere Plugins, die beim Start die Datei config.groovy aufrufen. Einer dieser Fälle war MultiTenant. Beim Zugriff auf die config.groovy und die nachfolgenden externen Konfigurationsdateien war $ {appName} nicht mehr im Geltungsbereich, also Tomcat geladene Anwendung ohne Probleme mit seinen Standardkonventionen. Das Spring-Logout versuchte dann nach dem Abmelden nach $ {appName} umzuleiten, welches zu der Zeit leer war oder [:].

Die Lösung war ich in der externen Konfigurationsdatei gefunden mein grails.serverURL von

grails.serverURL = "http://myApplication.com/${appName}" 

zu

grails.serverURL = "http://myApplication.com" + grails.app.name 

Dies ermöglicht die application.properties-Datei zu ändern, um die app.name enthalten Variable und die externe Konfigurationsdatei, um die korrekte Eigenschaft zu verwenden, die ich für die verschiedenen Bereitstellungen der WAR-Datei benötige.

Es mag nicht die eleganteste Lösung sein, aber es löst das Problem mit der Abmeldung der Feder.

+0

Hat mir geholfen. Ich habe Paypal Config wo ServerUrl geändert werden soll. Stellen Sie sicher, dass Sie es richtig für die Produktion einrichten. –

Verwandte Themen