私は春のセキュリティ4.1を使用しています。私が直面する問題は、ログインしようとしたときに、セッションが期限切れのページに数回戻されることです。私はorg.springframework.security.web.session.HttpSessionEventPublisher を追加することでも自分のHttpSessionListenerを追加するなどの複数のものを試してみましたが、セッションが期限切れ続けます。そのような動作の説明を質問の1つで読んでください。 「Spring Securityではセッションを無効にすることができます(ログイン後、新しいHttpSessionを取得するなど)。 Fiddlerツールを使用して何が起こっているかを確認しました。ユーザーは認証されていますが、セッションが切れたページにすぐにリダイレクトされています。私は、同じユーザーが自分の望む回数だけログインできるようにしたい。私は春3.xに移行するのに役立ついくつかの場所を読みましたが、古いバージョンの春が使用された場合にはそうかもしれないと思います。 をお勧めします。ですから、LogoutHandler
LogoutFilter
へのハンドラを実装し、顧客のログアウト・ハンドラを追加する必要が春のセキュリティセッションのタイムアウト
<http auto-config="true" use-expressions="true"
authentication-manager-ref="authenticationManager">
<session-management
invalid-session-url="/login?eventType=sessionTimedOut"
session-fixation-protection="none"
/>
<intercept-url pattern="/login" access="permitAll" />
<intercept-url pattern="/*" access="hasAnyAuthority('FF_USER','FF_ADMIN')" />
<form-login login-page="/login"
authentication-success-handler-ref="authenticationSuccessHandler"
authentication-failure-handler-ref="customAuthenticationFailureHandler"
login-processing-url="/j_spring_security_check"
username-parameter="j_username"
password-parameter="j_password"
/>
<logout invalidate-session="false" logout-success-url="/login?eventType=logout"
logout-url="/j_spring_security_logout" delete-cookies="JSESSIONID"/>
<csrf token-repository-ref="csrfTokenRepository" />
</http>
<beans:bean id="csrfTokenRepository"
class="org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository">
<beans:property name="headerName" value="X-XSRF-TOKEN" />
</beans:bean>
<beans:bean id="authenticationSuccessHandler" class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler">
<beans:property name="defaultTargetUrl" value="/home"/>
<beans:property name="alwaysUseDefaultTargetUrl" value="true"/>
</beans:bean>
<beans:bean id="customAuthenticationFailureHandler" class="*.*.CustomAuthenticationFailureHandler">
<beans:property name="defaultFailureUrl" value="/login?eventType=error"></beans:property>
<beans:property name="baseFailureUrl" value="/login?eventType=error"></beans:property>
</beans:bean>
<beans:bean id="authenticationManager"
class="org.springframework.security.authentication.ProviderManager">
<beans:constructor-arg>
<beans:list>
<beans:ref bean="ldapAuthenticationProvider" />
</beans:list>
</beans:constructor-arg>
<beans:property name="eraseCredentialsAfterAuthentication"
value="true" />
</beans:bean>
私もそれを使用しました。その場合、ログアウトすると、ログアウトページの代わりにセッションが切れたページに送られます。この問題は断続的に起こります。私は再度試してみるとログインできますが、ログイン直後にセッションが期限切れになる理由が問題です。 web.xmlに記載されている期間は開始され、元のままでなければなりません。また、上記の変更でも同じ問題が発生しました。私はWebsphereを使用して何かが変更される可能性がありますか? – hims
[消去クッキーのWebsphere-how-to-log-out](http://stackoverflow.com/questions/27466797/erase-cookie-in-websphere-how-to-log-out)と[WSSecurityHelper ](http://www.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.javadoc.doc/web/apidocs/com/ibm/websphere/security/WSSecurityHelper.html)これらは多分役立つかもしれませんLogoutHandler'を実装するログアウトハンドラを追加する必要があります – chaoluo
これは役に立ちませんでした。実際にログインから2回のログイン要求があり、解決したらこの動作は起こらなかった再び。ご協力ありがとうございました。あなたのアイデアを共有していただきありがとうございます。 – hims