2011-07-18 8 views
7

Springのセキュリティを使用して、以下のようにSpring MVCアプリケーションを設定したいと思います。Springセキュリティの基本設定

  1. 1つの同時ログインのみが許可されます。
  2. HTTPセッションが終了すると、ユーザは/security/sessionTimeout.html
  3. にリダイレクトされ、成功するとログインして「/」フォルダにリダイレクトされます。
  4. ユーザーがログアウトすると、彼は「/」にリダイレクトされます。

私はそれを次のように構成:

<security:http> 
<security:form-login login-page="/security/login.html" login-processing-url="/login" authentication-failure-url="/login.jsp?login_error=1" default-target-url="/"/> 
    <security:session-management invalid-session-url="/security/sessionTimeout.html"> 
     <security:concurrency-control max-sessions="1" /> 
    </security:session-management> 
    <security:logout logout-url="/logout" logout-success-url="/"/> 
    </security:http> 

を、私は次の問題があります。

私は2つの異なるブラウザで同じアカウントでログインすることができるよ
  1. (なし同時実行コントロールが動作しています)
  2. ログアウトをクリックすると、「/」ではなく「/security/sessionTimeout.html」にリダイレクトされました。

私は春のセキュリティリファレンスガイドに従ってきました。 私は何が間違っていますか?

更新日: これは私のweb.xmlの外観です。

アップデート2: だけデバッグモードでのlog4jを実行し、これは、ログアウトをクリックしたときに、私が得たものである:

DEBUG [http-8080-2] (FilterChainProxy.java:375) - /index.html at position 1 of 11 in additional filter chain; firing Filter: 'ConcurrentSessionFilter' 
DEBUG [http-8080-2] (FilterChainProxy.java:375) - /index.html at position 2 of 11 in additional filter chain; firing Filter: 'SecurityContextPersistenceFilter' 
DEBUG [http-8080-2] (HttpSessionSecurityContextRepository.java:130) - No HttpSession currently exists 
    DEBUG [http-8080-2] (HttpSessionSecurityContextRepository.java:88) - No SecurityContext was available from the HttpSession: null. A new one will be created. 
    DEBUG [http-8080-2] (FilterChainProxy.java:375) - /index.html at position 3 of 11 in additional filter chain; firing Filter: 'LogoutFilter' 
    DEBUG [http-8080-2] (FilterChainProxy.java:375) - /index.html at position 4 of 11 in additional filter chain; firing Filter: 'UsernamePasswordAuthenticationFilter' 
    DEBUG [http-8080-2] (FilterChainProxy.java:375) - /index.html at position 5 of 11 in additional filter chain; firing Filter: 'BasicAuthenticationFilter' 
    DEBUG [http-8080-2] (FilterChainProxy.java:375) - /index.html at position 6 of 11 in additional filter chain; firing Filter: 'RequestCacheAwareFilter' 
    DEBUG [http-8080-2] (FilterChainProxy.java:375) - /index.html at position 7 of 11 in additional filter chain; firing Filter: 'SecurityContextHolderAwareRequestFilter' 
    DEBUG [http-8080-2] (FilterChainProxy.java:375) - /index.html at position 8 of 11 in additional filter chain; firing Filter: 'AnonymousAuthenticationFilter' 
    DEBUG [http-8080-2] (AnonymousAuthenticationFilter.java:67) - Populated SecurityContextHolder with anonymous token: 'org.sprin[email protected]9055c2bc: Principal: anonymousUser; Credentials: [PROTECTED]; Authenticated: true; Details: org.sprin[email protected]b364: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: null; Granted Authorities: ROLE_ANONYMOUS' 
    DEBUG [http-8080-2] (FilterChainProxy.java:375) - /index.html at position 9 of 11 in additional filter chain; firing Filter: 'SessionManagementFilter' 
    DEBUG [http-8080-2] (SessionManagementFilter.java:87) - Requested session IDD8429BBAAA9561A97E1D2350ED63BC35 is invalid. 
    DEBUG [http-8080-2] (SessionManagementFilter.java:90) - Starting new session (if required) and redirecting to '/security/sessionTimeout.html' 

私はその後、/index.htmlに適用されるセッションの経営管理論フィルターを持っており、同様に、それは感じていますセッションが存在しません。どうすれば解決できますか? the Spring Security documentationから

+0

アイテムb)は、おそらくあなたが誰のユーザーによってもアクセスされなかったために発生しています。 – bluefoot

+0

どの春バージョンをお使いですか? – Simeon

+0

@Simeon、3.0.5、Spring 3.0.4 –

答えて

2

同時セッションのサポートを使用するには、web.xmlに以下を追加する必要があります:

<listener> 
    <listener-class> 
    org.springframework.security.web.session.HttpSessionEventPublisher 
    </listener-class> 
</listener> 

あなたはこれを追加しましたか?

+0

私はそれを持っているように見えますが、私はweb.xmlの設定全体をアップデートに投稿しました。 –

+0

これは私の問題を解決しませんでした。 –

関連する問題