Springのセキュリティを使用して、以下のようにSpring MVCアプリケーションを設定したいと思います。Springセキュリティの基本設定
- 1つの同時ログインのみが許可されます。
- HTTPセッションが終了すると、ユーザは/security/sessionTimeout.html
- にリダイレクトされ、成功するとログインして「/」フォルダにリダイレクトされます。
- ユーザーがログアウトすると、彼は「/」にリダイレクトされます。
私はそれを次のように構成:
<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つの異なるブラウザで同じアカウントでログインすることができるよ- (なし同時実行コントロールが動作しています)
- ログアウトをクリックすると、「/」ではなく「/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から
アイテムb)は、おそらくあなたが誰のユーザーによってもアクセスされなかったために発生しています。 – bluefoot
どの春バージョンをお使いですか? – Simeon
@Simeon、3.0.5、Spring 3.0.4 –