2013-05-21 17 views
18

Possiedo un'applicazione Grails con plug-in spring-security-core e framework Atmosphere.Ignora connessione WebSocket in Spring Security SavedRequest

Se mi disconnetto da una pagina che ha aperto una connessione WebSocket, Spring Security mantiene l'URL della connessione WebSocket come SavedRequest.

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] 

La prima voce nel registro ha il valore corretto per SavedRequest, ma in qualche modo viene sovrascritto dal collegamento Atmosfera WebSocket.

Come si comunica a Spring Security di non utilizzare la connessione WebSocket Atmosphere come SavedRequest?

Suppongo di poter utilizzare alcuni Atmosphere Protocol Specific Header per distinguere le connessioni.

+1

Cosa sull'aggiunta 'none'security il gestore Ambiente: willome

+0

Ciao, cercando di ripulire senza risposta. Hai risolto questo? Forse puoi rispondere alla tua stessa domanda. – Neoryder

+0

No, sfortunatamente non ho una soluzione. –

risposta

0

Nella configurazione Java è possibile impostare RequestMatcher, quindi è semplice.

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); 
}