Я использую весеннюю безопасность 4.1, проблема, с которой я сталкиваюсь, когда я пытаюсь войти в систему, я снова отправляется на страницу с истекшим сроком сессии. Я попробовал несколько вещей, как добавление свой собственный HttpSessionListener также путем добавления org.springframework.security.web.session.HttpSessionEventPublisher но сессия продолжает истекающий. Я прочитал в одном из вопросов объяснение такого поведения. «Возможно, Spring Spring в некоторых случаях может аннулировать сеанс (например, после входа в систему пользователь получает новую HttpSession)». Я использовал инструмент Fiddler, чтобы увидеть, что происходит, я вижу, что пользователь аутентифицирован, но мгновенно перенаправляется на страницу с истекшим сроком действия. Я хочу, чтобы тот же пользователь мог войти столько раз, сколько захочет. Я также читал в некоторых местах, что это поможет перейти к весне 3.x, но я предполагаю, что это может быть для случаев, когда использовалась более старая версия весны. , пожалуйста, предложите. СпасибоВесенняя сессия сеанса безопасности
<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
[erase-cookie-in-websphere-how-to-log-out] (http://stackoverflow.com/questions/27466797/erase-cookie-in-websphere-how-to-logoutout) и [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' обработчикам' LogoutFilter' – chaoluo
Это не помогло, я действительно обнаружил, что было два запроса для входа в систему с моего конца, и однажды я решил, что этого поведения не произошло еще раз. Спасибо за помощь. Я действительно ценю, что вы делитесь своими идеями. – hims