1. 程式人生 > 程式設計 >spring boot攔截器的使用場景示例詳解

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攔截器的使用場景示例詳解

通過這個例子我們瞭解到,對一些具有統一操作的動作,我們可以把它提取到攔截器裡去完成。

總結

到此這篇關於spring boot攔截器的使用場景的文章就介紹到這了,更多相關springboot攔截器使用場景內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!