springsecurity記住我登錄時(shí)訪問無權(quán)限接口跳轉(zhuǎn)登錄界面的處理方案
貼一下springsecurity無權(quán)限時(shí)異常處理的邏輯
- 未登錄狀態(tài):如果用戶嘗試訪問需要認(rèn)證的資源但未登錄,即未經(jīng)過認(rèn)證,在這種情況下應(yīng)該跳轉(zhuǎn)到登錄頁面或者返回登錄提示,讓用戶進(jìn)行身份驗(yàn)證。通過調(diào)用 AuthenticationEntryPoint 可以統(tǒng)一處理未登錄狀態(tài)下的跳轉(zhuǎn)邏輯,確保用戶體驗(yàn)一致性。
- 記住我狀態(tài):用戶可能選擇了“記住我”功能,在記住我狀態(tài)下,用戶的會(huì)話仍然有效,但并沒有進(jìn)行實(shí)際的身份驗(yàn)證。如果用戶在記住我狀態(tài)下訪問需要認(rèn)證的資源,也應(yīng)該跳轉(zhuǎn)到登錄頁面進(jìn)行實(shí)際的身份驗(yàn)證,而不是直接拒絕訪問。通過調(diào)用 AuthenticationEntryPoint 可以統(tǒng)一處理記住我狀態(tài)下的跳轉(zhuǎn)邏輯,提高系統(tǒng)的安全性和用戶體驗(yàn)。
這就是springsecurity對(duì)于記住我的處理邏輯,我想要通過記住我登錄的時(shí)候,訪問無權(quán)限接口依然調(diào)用AccessDeniedHandler拋出無權(quán)限,下面是我的處理方案。
1.在自定義AuthenticationEntryPoint 指出authException instanceof InsufficientAuthenticationException異常返回?zé)o權(quán)限。
@Component @Slf4j public class MyAuthenticationEntryPoint implements AuthenticationEntryPoint { @Autowired ObjectMapper objectMapper; @Override public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException { response.setContentType("text/html;charset=UTF-8"); log.warn("", authException); if (authException instanceof InsufficientAuthenticationException) { response.getWriter().write(objectMapper.writeValueAsString(R.error().code(HttpStatus.FORBIDDEN.value()).message("無權(quán)限!"))); }else { response.getWriter().write(objectMapper.writeValueAsString(R.error().code(HttpStatus.UNAUTHORIZED.value()).message("未登錄!"))); } } }
2.在配置類里定義http.anonymous().disable()//禁止匿名用戶,防止未通過身份認(rèn)證的用戶進(jìn)行鑒權(quán),從而拋出InsufficientAuthenticationException。
到此這篇關(guān)于springsecurity記住我登錄時(shí)訪問無權(quán)限接口,跳轉(zhuǎn)登錄界面的文章就介紹到這了,更多相關(guān)springsecurity跳轉(zhuǎn)登錄界面內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springsecurity實(shí)現(xiàn)用戶登錄認(rèn)證快速使用示例代碼(前后端分離項(xiàng)目)
- SpringSecurity自定義資源攔截規(guī)則及登錄界面跳轉(zhuǎn)問題
- 解決springSecurity 使用默認(rèn)登陸界面登錄后無法跳轉(zhuǎn)問題
- SpringSecurity表單配置之登錄成功及頁面跳轉(zhuǎn)原理解析
- SpringSecurity?默認(rèn)登錄認(rèn)證的實(shí)現(xiàn)原理解析
- SpringSecurity默認(rèn)登錄頁的使用示例教程
- SpringSecurityOAuth2實(shí)現(xiàn)微信授權(quán)登錄
- SpringSecurity實(shí)現(xiàn)前后端分離登錄token認(rèn)證詳解
- springSecurity實(shí)現(xiàn)簡單的登錄功能
- SpringSecurity自定義登錄成功處理
- SpringSecurity多表多端賬戶登錄的實(shí)現(xiàn)
相關(guān)文章
Spring內(nèi)存緩存Caffeine的基本使用教程分享
Caffeine作為當(dāng)下本地緩存的王者被大量的應(yīng)用再實(shí)際的項(xiàng)目中,可以有效的提高服務(wù)吞吐率、qps,降低rt,本文就來簡單介紹下Caffeine的使用姿勢(shì)吧2023-03-03java從mysql導(dǎo)出數(shù)據(jù)的具體實(shí)例
這篇文章主要介紹了java從mysql導(dǎo)出數(shù)據(jù)的具體實(shí)例,有需要的朋友可以參考一下2013-12-12SpringBoot實(shí)現(xiàn)自動(dòng)配置的示例代碼
本文主要介紹了SpringBoot實(shí)現(xiàn)自動(dòng)配置的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01Java數(shù)據(jù)結(jié)構(gòu)之隊(duì)列(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)
隊(duì)列(Queue)是只允許在一端進(jìn)行插入,而在另一端進(jìn)行刪除的運(yùn)算受限的線性表。 這篇文章詳細(xì)給大家介紹了java數(shù)據(jù)結(jié)構(gòu)之隊(duì)列,感興趣的朋友跟隨小編一起學(xué)習(xí)吧2017-04-04