在会话超时后,我遇到了退出应用程序的问题。我已经配置了注销网址:
<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请求工作。
答案 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标头。这将导致页面在会话到期后重新加载,实质上是将您注销。