springboot添加攔截器,並注入配置文件redis

創建攔截器類

以登錄攔截器爲例
@Component:把普通pojo實例化到spring容器中,相當於配置文件中的<bean id="" class=""/>


import com.xsj.xsj1800wsq.utils.RedisUtil;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

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

/**
 * @ClassName LoginInterceptor2
 * @Author zx
 * @Date 2019/7/4 15:05
 **/
@Component
public class LoginBaseInterceptor implements HandlerInterceptor {

    @Resource
    private RedisUtil redisUtil;

    // 執行Handler方法之前執行
    // 用於身份認證、身份授權
    // 比如身份認證,如果認證通過表示當前用戶沒有登陸,需要此方法攔截不再向下執行
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        // TODO Auto-generated method stub

        return true;
    }

    // 進入Handler方法之後,返回modelAndView之前執行
    // 應用場景從modelAndView出發:將公用的模型數據(比如菜單導航)在這裏
    // 傳到視圖,也可以在這裏統一指定視圖
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                           ModelAndView modelAndView) throws Exception {
        // TODO Auto-generated method stub
    }

    // 執行Handler完成執行此方法
    // 應用場景:統一異常處理,統一日誌處理
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        // TODO Auto-generated method stub

    }
}

創建@Configuration


import com.xsj.xsj1800wsq.interceptor.LoginBaseInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @ClassName WebConfig
 * @Author zx
 * @Date 2019/7/4 15:12
 **/
@Configuration
public class WebConfig implements WebMvcConfigurer {

    //不攔截這些請求
    private final String[] notLoginInterceptPaths = {"/static/**","/admin/login","/error/**","/login"};

    @Bean
    public LoginBaseInterceptor loginBaseInterceptor(){
        return new LoginBaseInterceptor();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //這裏直接調用上面聲明的函數loginBaseInterceptor(),不要重新new
        registry.addInterceptor(loginBaseInterceptor()).addPathPatterns("/**").excludePathPatterns(notLoginInterceptPaths);
    }
}

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