2013-05-21 3 views
18

Ich habe eine Grails-Anwendung mit Spring-Security-Core-Plugin und Atmosphere Framework.Ignore WebSocket-Verbindung im Frühjahr Security SavedRequest

Wenn ich mich von einer Seite abmelde, die eine WebSocket-Verbindung geöffnet hat, behält Spring Security die URL der WebSocket-Verbindung als SavedRequest bei.

DEBUG savedrequest.HttpSessionRequestCache - DefaultSavedRequest added to Session: DefaultSavedRequest[http://localhost:8080/formx/formX/update] 
DEBUG savedrequest.HttpSessionRequestCache - DefaultSavedRequest added to Session: DefaultSavedRequest[http://localhost:8080/formx/formX/notifications/?X-Atmosphere-Transport=close&X-Atmosphere-tracking-id=b5d8fde4-d950-41fd-9b49-02e06799a36f&conversationId=988080042] 

Der erste Eintrag im Protokoll hat den richtigen Wert für SavedRequest, aber irgendwie ist es durch die Atmosphäre WebSocket-Verbindung überschreibt.

Wie kann ich Spring Security mitteilen, die Atmosphere WebSocket-Verbindung nicht als "SavedRequest" zu verwenden?

Ich denke, ich kann einige Atmosphere Protocol Specific Header verwenden, um Verbindungen zu unterscheiden.

+1

Was ist mit ‚none'security auf Atmosphere Prozedur hinzuzufügen: willome

+0

Hallo, versuche, unbeantwortet zu räumen. Hast du das gelöst? Vielleicht kannst du deine eigene Frage beantworten. – Neoryder

+0

Nein, leider habe ich keine Lösung. –

Antwort

0

In Java-Konfiguration können Sie den RequestMatcher einstellen - dann ist es einfach.

In WebSecurityConfigurerAdapter:

protected void configure(HttpSecurity http) { 
    HttpSessionRequestCache cache = new HttpSessionRequestCache(); //this one is used by default 
    cache.setRequestMatcher(AnyRequestMatcher.INSTANCE); //change the request matcher, so it do not match your Atmosphere requests 
    http.requestCache().requestCache(cache); 
}