spring boot攔截器的使用場(chǎng)景示例詳解
前言
在用戶登陸之后,我們一般會(huì)把用戶登陸的狀態(tài)和相關(guān)信息進(jìn)行存儲(chǔ),把對(duì)應(yīng)的token返回到客戶端進(jìn)行存儲(chǔ),下次請(qǐng)求過來時(shí),系統(tǒng)可以通過token拿到當(dāng)前這個(gè)用戶的相關(guān)信息,這是授權(quán)通常的作法,而有時(shí)一些業(yè)務(wù)里,你存儲(chǔ)的用戶信息不是全局的,可能只是某幾個(gè)接口會(huì)用戶某些信息,而你把它存儲(chǔ)起來就不是很合理;并且一些隱私信息持久化到redis也不合理,這時(shí)就需要統(tǒng)一對(duì)這種接口的請(qǐng)求做一起處理了。
攔截器HandlerInterceptor
我們可以去實(shí)現(xiàn)這個(gè)HandlerInterceptor接口,它會(huì)把請(qǐng)求頁面前,請(qǐng)求頁面后等方法,我們可以重寫它們,把自己的邏輯加進(jìn)來,比如我們可以在請(qǐng)求頁面前,通過當(dāng)前登陸人ID獲取到當(dāng)前登陸人能看的信息ID集合,并把這些ID集合以參數(shù)的形式傳到這個(gè)頁面里,這個(gè)過程是在服務(wù)端自動(dòng)完成的,即對(duì)某個(gè)頁面(接口)進(jìn)行攔截,添加自己的邏輯。
/** * 當(dāng)前用戶的數(shù)據(jù)權(quán)限. */ @Slf4j public class DataPermissionInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { logger.info("DataPermissionInterceptor.init"); //業(yè)務(wù)邏輯,可能判斷當(dāng)前登陸人存儲(chǔ)的數(shù)據(jù)權(quán)限類型,然后統(tǒng)一處理,拿到可以訪問的數(shù)據(jù)編號(hào)集合 String[] ids = {"1", "2", "3"}; request.setAttribute("approveIds", StringUtils.join(ids, ",")); return true; } }
注冊(cè)這個(gè)攔截器
/** * 注冊(cè)攔截器 */ @Configuration public class InterceptorConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { // 自定義攔截器,添加攔截路徑和排除攔截路徑 registry.addInterceptor(new DataPermissionInterceptor()).addPathPatterns("/approve/**"); } }
在對(duì)應(yīng)的頁面(接口)里讀取在攔截器里賦值的對(duì)象,就可以進(jìn)行剩下的工作了。
通過這個(gè)例子我們了解到,對(duì)一些具有統(tǒng)一操作的動(dòng)作,我們可以把它提取到攔截器里去完成。
總結(jié)
到此這篇關(guān)于spring boot攔截器的使用場(chǎng)景的文章就介紹到這了,更多相關(guān)springboot攔截器使用場(chǎng)景內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springboot攔截器過濾token,并返回結(jié)果及異常處理操作
- SpringBoot+SpringSecurity 不攔截靜態(tài)資源的實(shí)現(xiàn)
- SpringBoot @ControllerAdvice 攔截異常并統(tǒng)一處理
- SpringBoot攔截器如何獲取http請(qǐng)求參數(shù)
- Spring boot攔截器實(shí)現(xiàn)IP黑名單的完整步驟
- SpringBoot攔截器原理解析及使用方法
- SpringBoot配置攔截器方式實(shí)例代碼
- SpringBoot攔截器Filter的使用方法詳解
- Spring Boot攔截器和過濾器實(shí)例解析
- Spring boot如何基于攔截器實(shí)現(xiàn)訪問權(quán)限限制
相關(guān)文章
Java?jar打包成exe應(yīng)用程序的詳細(xì)步驟
本文主要介紹了Java?jar打包成exe應(yīng)用程序的詳細(xì)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01SpringBoot使用SOFA-Lookout監(jiān)控的方法
本文介紹SpringBoot使用螞蟻金服SOFA-Lookout配合Prometheus進(jìn)行監(jiān)控,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-03-03Spring中@Autowired和@Resource注解相同點(diǎn)和不同點(diǎn)
這篇文章主要介紹了Spring中@Autowired和@Resource注解相同點(diǎn)和不同點(diǎn),本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01數(shù)組實(shí)現(xiàn)Java 自定義Queue隊(duì)列及應(yīng)用操作
這篇文章主要介紹了數(shù)組實(shí)現(xiàn)Java 自定義Queue隊(duì)列及應(yīng)用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Java遠(yuǎn)程連接Linux服務(wù)器并執(zhí)行命令及上傳文件功能
這篇文章主要介紹了Java遠(yuǎn)程連接Linux服務(wù)器并執(zhí)行命令及上傳文件功能,本文是小編整理的代碼筆記,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-05-05詳解SpringCloud服務(wù)認(rèn)證(JWT)
本篇文章主要介紹了SpringCloud服務(wù)認(rèn)證(JWT),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-01-01SpringBoot多數(shù)據(jù)源配置的全過程記錄
在用SpringBoot開發(fā)項(xiàng)目時(shí),隨著業(yè)務(wù)量的擴(kuò)大,我們通常會(huì)進(jìn)行數(shù)據(jù)庫(kù)拆分或是引入其他數(shù)據(jù)庫(kù),從而我們需要配置多個(gè)數(shù)據(jù)源,下面這篇文章主要給大家介紹了關(guān)于SpringBoot多數(shù)據(jù)源配置的相關(guān)資料,需要的朋友可以參考下2021-11-11JAVA序列化和反序列化的底層實(shí)現(xiàn)原理解析
這篇文章主要介紹了JAVA序列化和反序列化的底層實(shí)現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11IDEA快速部署Spring?Boot?項(xiàng)目到Docker的實(shí)現(xiàn)方法
本文主要介紹了IDEA快速部署Spring?Boot?項(xiàng)目到Docker的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07