springsecurity怎麼設置登錄跳轉(SpringSecurity實現自定義登錄界面)
2023-09-19 15:52:20
前面通過入門案例介紹,我們發現在SpringSecurity中如果我們沒有使用自定義的登錄界面,那麼SpringSecurity會給我們提供一個系統登錄界面。但真實項目中我們一般都會使用自定義的登錄界面,本文我們就來介紹下如何實現該操作。注意:本文是在入門案例代碼的基礎上演示的!
一、頁面準備我們準備如下相關的jsp頁面
1.login.jsp頁面Title 登錄管理 帳號: 密碼:
2.home.jsp頁面Title home界面
3.其他頁面在這裡插入圖片描述
二、SpringSecurity相關配置1.配置認證信息配置登錄和註銷相關的信息
2.認證界面匿名訪問前面配置的
會使登錄界面不可訪問,所以我們需要方法
在這裡插入圖片描述
3.放過靜態資源同樣的系統的 js css 等靜態資源文件也會被對應的過濾器攔截,所以也需要方法
在這裡插入圖片描述
4.登錄測試啟動服務我們訪問登錄試試
在這裡插入圖片描述
可以訪問到,然後提交登錄看看注意表單設置
在這裡插入圖片描述
然後訪問出現了403錯誤
在這裡插入圖片描述
三、關閉csrf攔截上面我們在帳號和角色都正確的情況下,登錄後出現了 403錯誤,原因是因為 Csrf過濾器攔截了,那為什麼系統提供的登錄界面沒問題呢?原因是如下
在這裡插入圖片描述
在系統提供的登錄表單中隱藏的有csrf相關的信息。這時我們可以關閉csrf過濾器,來實現登錄工作
在這裡插入圖片描述
重啟服務再測試就可以了
在這裡插入圖片描述
四、csrf防護上面我們通過關閉csrf過濾器實現了認證功能,但是系統將面臨csrf攻擊的風險,所以我們需要放開服務,同時也要能夠完成認證。首先我們來看下CsrfFilter的源碼
1.CsrfFilter源碼查看在這裡插入圖片描述
this.requireCsrfProtectionMatcher.matches(request)方法
在這裡插入圖片描述
通過 GET HEAD TRACE OPTIONS 提交的數據不會 csrf 驗證
2.放開過濾器前面關閉的我們需要放開
在這裡插入圖片描述
3.頁面動態token導入security標籤
在這裡插入圖片描述
在表單中使用,作用和下面的一致
在這裡插入圖片描述
:ajax方式提交的時候使用
五、註銷功能在home.jsp中添加註銷連結
在這裡插入圖片描述
點擊後出現了404錯誤原因是:自定義的註銷功能必須通過post方式提交才行,所以如下
在這裡插入圖片描述
在這裡插入圖片描述
出現這個原因是 csrf的原因,加標籤即可
在這裡插入圖片描述
搞定~
,