2017-01-25 16 views
0

ユーザがCSSファイルなどの静的リソースを要求したときにセッションを作成しないようにしたい。 Howerverは、WebSecurityにこの静的リソースパスを無視するように指示した後でも、SpringBootアプリケーションからのすべての応答にJSESSIONID Cookieが残っていることに気付きました。どうして?SpringのWebSecurityが「無視」してセッションを作成中

public void configure(WebSecurity web) throws Exception { 
    web.ignoring().antMatchers("/css/**"); 
} 

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http.formLogin() 
     .loginPage("/login") 
     .loginProcessingUrl("/login") 
     .and() 
     .authorizeRequests() 
     .antMatchers(HttpMethod.GET, "/login", "/error").permitAll() 
     .anyRequest().authenticated(); //all other pages require users to be authenticated 

} 

私はアプリケーションを保護するためにSpring Securityを使用していますが、これらの静的リソースへのリクエストでは、セッションを作成または検証したくありません。

答えて

0

問題が見つかりました。私の責任です。私はSpring Securityと拡張RequestHeaderAuthenticationFilterを使用しています。 web.ignoring()はすべてのSpring Security認証/認可チェックを回避しますが、それでもカスタムフィルタを実行します。

HttpServletRequest req = ((HttpServletRequest) request); 
HttpSession session = req.getSession(); 

私はセッションが既に存在するかどうかを確認するためにそれを使用して、私はそれを更新する必要がある場合(複雑すぎるここで説明する):

は私のフィルタの一つで、私は次の行を持っていました。しかし、 method, req.getSession()はまだ存在しない場合は新しいセッションを作成します。私はそれがその副作用を持っていたことに気付かなかった。

代わりに、私はreq.getSession(false)と呼ぶべきです。すでに存在する場合はセッションを返し、そうでない場合はnullを返します。

関連する問題