2017-07-03 11 views
3

Ich verwende Spark Java mit dem eingebetteten Jetty, um die Anwendung auszuführen. Die Anwendung ist eine kleine Webanwendung mit mehreren Integrationen mit bestimmten externen Diensten, die von einer bestimmten Konfiguration abhängen.Ändern des Session-Cookie-Namens

Die Anforderung ist, dass der Kunde in der Lage sein muss, mehrere Integrationen auf demselben Server in verschiedenen Ports auszuführen, also z. B .: Anwendung läuft auf verschiedenen Ports 8080 und 8084 mit unterschiedlicher Integration. Das Problem besteht darin, dass der Sitzungscookie kollidiert, wenn der Benutzer versucht, auf beide Anwendungen im selben Browser zuzugreifen, und Probleme auftreten. Gibt es eine Möglichkeit, die Session-Variable von JSESSIONID zu etwas anderem zu ändern? Oder gibt es einen Weg, wie ich Spark informieren kann, um auch den Port in die Cookie-Domain aufzunehmen?

Ich habe versucht, die Cookie-Domäne mit getServletContext().getSessionCookieConfig().setDomain() setzen, aber getServletContext() gibt immer NULL zurück.

Jede Hilfe wird sehr geschätzt. Danke,

Antwort

2

this Zug von März 2017 angefordert machte es möglich, tune die eingebettete Anlegesteg so fein:

public class Main { 
    public static void main(String ...args) throws Exception { 
     EmbeddedServers.add(EmbeddedServers.Identifiers.JETTY, (Routes routeMatcher, StaticFilesConfiguration staticFilesConfiguration, boolean hasMultipleHandler) -> { 
      MatcherFilter matcherFilter = new MatcherFilter(routeMatcher, staticFilesConfiguration, false, hasMultipleHandler); 
      matcherFilter.init(null); 

      JettyHandler handler = new JettyHandler(matcherFilter); 
      handler.getSessionCookieConfig().setName("XSESSION"); 

      return new EmbeddedJettyServer((int maxThreads, int minThreads, int threadTimeoutMillis) -> { 
       return new Server(); 
      }, handler); 
     }); 

     get("/hello", (req, res) -> { 
      req.session(true); 
      return "Hello World"; 
     }); 
    } 
} 

jetzt können Sie die Ergebnisse mit curl wie folgt überprüfen:

curl -v localhost:4567/hello 

und die resultierende Ausgabe wird Ihnen folgen Set-Cookie header:

Set-Cookie: XSESSION=node01j56de4fpp69kl2ye6br6cvno0.node0;Path=/ 
+0

Unfo Leider funktioniert diese Lösung nur für Version 2.6, aber nicht für Version 2.7. – Razavi