繁体   English   中英

注销后立即登录会导致重定向到主页

[英]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用于登录和注销

我该如何处理这个问题?

我认为这是一个“暂时”的解决方案。

你可以:

  1. 在您的 web.xml 中声明您自己的HttpSessionEventPublisher

     <listener> <listener-class>org.yourcompany.MyHttpSessionEventPublisher</listener-class> </listener>
  2. HttpSessionEventPublisher中抓取HttpSessionDestroyedEvent并且不允许 spring 使看到无效。

我不确定这是否是“正确”的解决方案,但它应该可以工作。

我设法通过使用invalidate-session="false"解决了这个问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM