SpringBoot 自定義攔截器

在開發的過程中,爲了實現登錄權限驗證,我們往往需要添加一個攔截器在用戶的的請求到達controller層的時候實現登錄驗證,實現原理:

1.創建TokenInterceptor類,實現HandlerInterceptor接口,重寫接口中的三個方法:

package com.myapp.core.config;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author :zzb
 * @createDate :2019/6/28 16:41
 * @desc :攔截器
 */
public class TokenInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        System.out.println("--------攔截器執行前置方法  --------preHandle---------------");
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        System.out.println("--------攔截器執行後置方法  --------postHandle---------------");
    }

    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
        System.out.println("--------攔截器執行最終方法  --------afterCompletion---------------");
    }
}

2.創建WebAppConfigurer類繼承WebMvcConfigureAdapter類,註冊自定義的攔截器TokenInterceptor,覆蓋其addInterceptors接口:

package com.myapp.core.config;


import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
 * @author :zzb
 * @createDate :2019/6/28 17:02
 * @desc :
 */
@Configuration
public class WebAppConfigurer extends WebMvcConfigurerAdapter {

    @Value("${interceptor.configs}")
    private String configs;

    @Bean
    public HandlerInterceptor getTokenInterceptor(){
        return new TokenInterceptor();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 多個攔截器組成一個攔截器鏈
        // addPathPatterns 用於添加攔截規則
        // excludePathPatterns 用於排除攔截路徑
        registry.addInterceptor(getTokenInterceptor()).addPathPatterns(configs).excludePathPatterns("/test/*");     }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章