[英]Immediate signing in after logout causes redirection to home page
我有一个通用的登录和注销屏幕。 当我登录后注销时...我来到登录页面。 spring 安全性的默认行为使 session 在注销时失效,因此如果我尝试使用同一屏幕登录,我将被重定向到主页,因为此时没有可用的 Z21D6F40CFB511982E4424E0E2。 所需的行为应该能够在注销后立即登录,由于 session 失效而不会发生
<http use-expressions="true" access-denied-page="/access-denied">
<intercept-url pattern="/secured/user/sign-up" access="hasAnyRole('ROLE_USER','ROLE_ANONYMOUS')" />
<intercept-url pattern="/secured/user/sign-in" access="hasRole('ROLE_ANONYMOUS')" />
<intercept-url pattern="/secured/**" requires-channel="https" />
<intercept-url pattern="/user/dashboard/**" access="hasAnyRole('ROLE_IC')" />
<intercept-url pattern="/**" access="permitAll"
requires-channel="http" />
<form-login login-page="/secured/user/sign-in"
authentication-success-handler-ref="authenticationSuccessHandler"
authentication-failure-url="/secured/user/sign-in" />
<logout logout-success-url="/secured/user/sign-in?loggedout=true"
logout-url="/secured/logout"/>
<security:session-management
session-fixation-protection="none">
</security:session-management>
</http>
如果您参考 xml,您将看到/secured/user/sign-in
用于登录和注销
我该如何处理这个问题?
我认为这是一个“暂时”的解决方案。
你可以:
在您的 web.xml 中声明您自己的HttpSessionEventPublisher
:
<listener> <listener-class>org.yourcompany.MyHttpSessionEventPublisher</listener-class> </listener>
在HttpSessionEventPublisher
中抓取HttpSessionDestroyedEvent
并且不允许 spring 使看到无效。
我不确定这是否是“正确”的解决方案,但它应该可以工作。
我设法通过使用invalidate-session="false"
解决了这个问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.