Spring Boot 添加 Security 起步依賴,使用 thymeleaf 模板提交表單被攔截問題

問題:

       最近在學習 Spring Boot,實戰的時候遇到了問題,就是添加了 spring-boot-starter-security 依賴後,使用 thymeleaf 提交表單後報 403 錯誤。

 

原因是:

       添加上述依賴後,默認開啓了防止跨域攻擊的功能,任何 POST 提交到後臺的表單都要驗證是否帶有 _csrf 參數,一旦傳來的 _csrf 參數不正確,服務器便返回 403 錯誤;

 

解決方案:

1、比較常規的解決方案就是,在 form 表單中添加 th:action 屬性, thymeleaf 會 自動在 form 表單中生成 _csrf 隱藏域,代碼如下:

<form method="POST" th:action="@{/add}">...</form>

可以打開頁面調試,在 Network 欄目下查看提交數據,可以觀察到 Form Data 裏面生產了 _csrf 數據。

 

2、還有比較直接的解決方案,就是在重寫的 configure(HttpSecurity http) 方法中關閉防跨域攻擊功能,不太推薦:

http.csrf().disable()

3、還有一種就是在 form 表單中手動添加隱藏 _csrf,比較麻煩,有興趣的可以網上搜索一下具體做法。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章