前後端分離中關於springSecurity使用的坑

# 前後端分離中關於springSecurity使用的坑

1.問題拋出:當前後端未分離的時候,我們經常通過後端同時返回數據和頁面給前端,但是當前後端分離的時候,我們只能通過Json數據來進行前後端的交互,例如登錄授權過程,下面我來給大家講一個之前踩過的坑:

2.問題出現:前後端分離的登錄過程中,我們可以自定義拓展後端security框架內容實現根據不同的登錄情況進行不同的數據響應,例如登錄成功後我們通過實現AuthenticationSuccessHandler接口對成功內容進行返回({"code":200,"msg":"登錄成功"});登錄失敗時通過實現AuthenticationFailureHandler接口進行數據響應;但是有一種情況可能在前後端分離時出現:當我們未登錄,直接請求需要授權的資源時將被框架攔截,我們可以通過實現AuthenticationEntryPoint接口中的commence方法進行未登錄操作的數據響應即可,但是經常有朋友會出現postman調試成功,但是瀏覽器調試失敗,並且返回錯誤碼302,而ajax對302錯誤無感知,會將請求重定向到登錄接口的情況。

3.解決方式:一般錯誤的配置內容是在WebSecurityConfigurerAdapter配置類中添加如下配置:.httpBasic().authenticationEntryPoint(new AuthenticationEntryPoint()),此配置在授權失敗的時候將出現重定向錯誤
正確的配置:.exceptionHandling().authenticationEntryPoint(new AuthenticationEntryPoint()),使用這種配置前後端分離時未登錄時將得到後端的響應數據

發佈了1 篇原創文章 · 獲贊 0 · 訪問量 59
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章