会话超时后的Spring安全注销

时间:2015-08-20 20:33:38

标签: spring spring-mvc spring-security

在会话超时后,我遇到了退出应用程序的问题。我已经配置了注销网址:

<security:logout logout-url="/logout" logout-success-url="/" delete-cookies="JESSIONID"/>

我有退出表格:

<form action="#" th:action="@{/logout}" method="POST">
    <input type="submit" th:value="#{btn.logout}"/>
</form>

只要会话仍处于活动状态,表单标记就会添加csrf参数并且注销工作正常。但是,如果我登录应用程序,将其打开足够长的时间以使会话过期,然后点击注销按钮我收到错误: HTTP状态405 - 不支持请求方法“POST”

我仍然希望保留csrf验证并使其作为POST请求工作。

2 个答案:

答案 0 :(得分:1)

我在文档中找到了解决方案: 在Spring安全配置中,您必须添加以下行:

<session-management invalid-session-url="/login" />

一个例子:

<form-login
    login-page="/login"
    default-target-url="/"
    authentication-failure-url="/login?error"
    username-parameter="username"
    password-parameter="password" />

<session-management invalid-session-url="/login" />

<form-login login-processing-url="/login" login-page="/login"/>
<logout logout-success-url="/" logout-url="/logout"/>

我希望它会对你有所帮助。

答案 1 :(得分:0)

在会话到期后立即设置Refresh HTTP标头。这将导致页面在会话到期后重新加载,实质上是将您注销。