grails - Ignorar la conexión WebSocket en Spring Saved SavedRequest
spring-security atmosphere (1)
Tengo una aplicación Grails con plugin spring-security-core y Atmosphere framework.
Si cierro la sesión de una página que ha abierto una conexión WebSocket, Spring Security conserva la URL de la conexión WebSocket como 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 primera entrada en el registro tiene el valor correcto para SavedRequest, pero de alguna manera es sobrescrito por la conexión Atmosphere WebSocket.
¿Cómo le digo a Spring Security que no use la conexión Atmosphere WebSocket como SavedRequest?
Supongo que puedo usar un Encabezado específico de protocolo de atmósfera para distinguir las conexiones.
En la configuración de Java, puede establecer RequestMatcher, luego es fácil.
En 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);
}