您好,登錄后才能下訂單哦!
小編這次要給大家分享的是詳解spring boot攔截器,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
前言
在用戶登陸之后,我們一般會把用戶登陸的狀態和相關信息進行存儲,把對應的token返回到客戶端進行存儲,下次請求過來時,系統可以通過token拿到當前這個用戶的相關信息,這是授權通常的作法,而有時一些業務里,你存儲的用戶信息不是全局的,可能只是某幾個接口會用戶某些信息,而你把它存儲起來就不是很合理;并且一些隱私信息持久化到redis也不合理,這時就需要統一對這種接口的請求做一起處理了。
攔截器HandlerInterceptor
我們可以去實現這個HandlerInterceptor接口,它會把請求頁面前,請求頁面后等方法,我們可以重寫它們,把自己的邏輯加進來,比如我們可以在請求頁面前,通過當前登陸人ID獲取到當前登陸人能看的信息ID集合,并把這些ID集合以參數的形式傳到這個頁面里,這個過程是在服務端自動完成的,即對某個頁面(接口)進行攔截,添加自己的邏輯。
/** * 當前用戶的數據權限. */ @Slf4j public class DataPermissionInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { logger.info("DataPermissionInterceptor.init"); //業務邏輯,可能判斷當前登陸人存儲的數據權限類型,然后統一處理,拿到可以訪問的數據編號集合 String[] ids = {"1", "2", "3"}; request.setAttribute("approveIds", StringUtils.join(ids, ",")); return true; } }
注冊這個攔截器
/** * 注冊攔截器 */ @Configuration public class InterceptorConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { // 自定義攔截器,添加攔截路徑和排除攔截路徑 registry.addInterceptor(new DataPermissionInterceptor()).addPathPatterns("/approve/**"); } }
在對應的頁面(接口)里讀取在攔截器里賦值的對象,就可以進行剩下的工作了。
通過這個例子我們了解到,對一些具有統一操作的動作,我們可以把它提取到攔截器里去完成。
看完這篇關于詳解spring boot攔截器的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。