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。
添加回答
舉報