3 回答
TA贡献1884条经验 获得超4个赞
这是一个 CSRF 功能,可以避免来自其他站点的恶意 javascript 发起的注销请求。
您的请求是GET: /logout,因此 Spring Security 希望通过用户操作(例如单击)来确认它。
所以要避免它。您的注销请求应该POST包含有效的_csrf令牌。
您可以通过使用 spring 表单标签和方法 post 来实现它,如下所示
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
...
<form:form action="${pageContext.request.contextPath}/logout"
method="post" modelAttribute="AnyModelAttributePassedFromController">
<form:button value="submit"> Logout</form:button>
</form:form>
...
或者
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
...
<form:form action="${pageContext.request.contextPath}/logout"
method="post" modelAttribute="_csrf">
<form:button value="submit"> Logout</form:button>
</form:form>
...
TA贡献1827条经验 获得超4个赞
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"));
}
这个对我有用。
TA贡献1874条经验 获得超12个赞
您可以尝试以下方法:-
<logout logout-success-url="/anonymous.html" logout-url="/perform_logout" />
您可以提及要重定向的网址。您还可以添加 delete-cookies="JSESSIONID"
删除cookie。
添加回答
举报