溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解spring boot攔截器

發布時間:2020-07-20 14:58:08 來源:億速云 閱讀:220 作者:小豬 欄目:編程語言

小編這次要給大家分享的是詳解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攔截器的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女