Подтвердить что ты не робот

Игнорировать подключение к WebSocket в Spring Security SavedRequest

У меня есть приложение Grails с плагином spring -security-core и Atmosphere framework.

Если я выйду со страницы, открывшей соединение с WebSocket, то Spring Безопасность сохраняет URL-адрес соединения WebSocket как 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]

Первая запись в журнале имеет правильное значение для SavedRequest, но каким-то образом она перезаписывается соединением Atmosphere WebSocket.

Как сообщить Spring Безопасность не использовать соединение Atmosphere WebSocket как SavedRequest?

Я думаю, что я могу использовать Специфический заголовок протокола атмосферы, чтобы отличать соединения.

4b9b3361

Ответ 1

В конфигурации Java вы можете установить RequestMatcher - тогда это легко.

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