29

spring-security-core プラグインとAtmosphereフレームワークを備えた Grails アプリケーションがあります。

WebSocket 接続を開いたページからログアウトすると、Spring Security は WebSocket 接続の URL を 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 Security に Atmosphere WebSocket 接続を SavedRequest として使用しないように指示するにはどうすればよいですか?

大気プロトコル固有のヘッダーを使用して、接続を区別できると思います。

4

1 に答える 1

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);
}
于 2016-01-10T19:20:40.127 に答える