Wie stelle ich grails.serverURL in einer Unternehmensumgebung ein, wenn ich den Servernamen und den Port nicht im Voraus kenne?

8

Wir haben eine Anwendung in Grails 2.0, die funktioniert, wenn wir auf localhost:8080 laufen. In Config.groovy hat die Anwendung eine Eigenschaft grails.serverURL , die für den aktuellen Host und den aktuellen App-Namen festgelegt werden muss. In unserer QA-Umgebung übernimmt das Middleware-Team jedoch den Krieg, den wir ihnen geben, und stellt es einem Server zur Verfügung, dessen Namen und Port uns nicht im Voraus bekannt sind.

Es scheint, als ob Grails annimmt, dass Sie immer einen Domain-Namen registrieren und dann die volle Kontrolle über diesen Namen und den Port haben werden, auf dem die App läuft, was nicht der Fall ist.

Was ist der beste Weg, um dieses Problem anzugehen? Wir haben versucht, grails.serverURL einfach zu entfernen, aber Spring Security scheint es zu verwenden, um die URL für Weiterleitungen beim erfolgreichen Anmelden und erfolgreichen Abmelden aufzubauen.

%Vor%

Und bevor jemand fragt, habe ich zahlreiche Beiträge zu StackOverflow und anderswo gelesen, die sich auf dieses Problem beziehen, aber diese spezifische Frage nicht beantworten.

    
cdeszaq 19.01.2012, 21:13
quelle

3 Antworten

9

Nein, Spring Security verwendet es nicht. Es sollte immer sicher sein, die serverURL-Eigenschaft zu entfernen und Grails URLs relativ zur aktuell laufenden App generieren zu lassen.

Normalerweise benötigen Sie diese Eigenschaft nur, wenn Sie E-Mails generieren und die Server-URL einbetten möchten, sodass Benutzer auf Ihre Website zurückklicken können. Da diese oft asynchron und nicht während einer Serveranfrage gesendet werden, gibt es keine Möglichkeit, die Serveradresse ohne eine Konfigurationsoption zu kennen. Aber wenn Sie das nicht tun, ist es sicher wegzulassen.

    
Burt Beckwith 19.01.2012, 21:37
quelle
6

Grails hat einen eingebauten Mechanismus namens Externalized Configuration , der Ihnen einen oder mehrere ermöglicht optionale Config.groovy -Dateien außerhalb Ihrer Anwendung.

Sie fügen so etwas zu Ihrem Config.groovy hinzu:

%Vor%

Fügen Sie dann in jede dieser Dateien auf Ihrem Server diesen Inhalt ein:

%Vor%

Die externe Konfiguration überschreibt die Basiskonfiguration.

    
OverZealous 19.01.2012 21:55
quelle
4

Veröffentlichen Sie die serverURL in einer Eigenschaft, die von Ihrem Middleware-Team festgelegt werden kann. Zum Beispiel, legen Sie in einer Datei config.properties und haben Sie es als Teil Ihrer Eigenschaft config für Spring. Im Allgemeinen ist es eine bewährte Methode, Eigenschaften externalisiert zu haben, damit Sie die WAR-Umgebung weitergeben und sie bereitstellen und konfigurieren können, ohne erneut kompilieren und neu packen zu müssen.

Hier finden Sie ein besseres Beispiel: Ссылка

    
user463226 19.01.2012 21:32
quelle

Tags und Links