SpringBoot如何添加攔截器


在web開發的過程中,為了實現登錄權限驗證,我們往往需要添加一個攔截器在用戶的的請求到達controller層的時候實現登錄驗證,那么SpringBoot如何添加攔截器呢?

步驟如下:

1.繼承WebMvcConfigureAdapter類,覆蓋其addInterceptors接口,注冊我們自定義的攔截器:

/** 
 * 
 * 注冊攔截器 
 * Created by SYSTEM on 2017/8/16. 
 */  
public class WebAppConfig extends WebMvcConfigurerAdapter {  
  
    @Override  
    public void addInterceptors(InterceptorRegistry registry) {  
        //注冊自定義攔截器,添加攔截路徑和排除攔截路徑  
        registry.addInterceptor(new InterceptorConfig()).addPathPatterns("api/path/**").excludePathPatterns("api/path/login");  
    }  
} 

2.實現HandlerInterceptor接口,重寫接口中的三個方法:

public class InterceptorConfig  implements HandlerInterceptor{  
  
    private static final Logger log = LoggerFactory.getLogger(InterceptorConfig.class);  
  
    /** 
     * 進入controller層之前攔截請求 
     * @param httpServletRequest 
     * @param httpServletResponse 
     * @param o 
     * @return 
     * @throws Exception 
     */  
    @Override  
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {  
  
        log.info("---------------------開始進入請求地址攔截----------------------------");  
        HttpSession session = httpServletRequest.getSession();  
        if(!StringUtils.isEmpty(session.getAttribute("userName"))){  
            return true;  
        }  
        else{  
            PrintWriter printWriter = httpServletResponse.getWriter();  
            printWriter.write("{code:0,message:\"session is invalid,please login again!\"}");  
            return false;  
        }  
  
    }  
  
    @Override  
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {  
        log.info("--------------處理請求完成后視圖渲染之前的處理操作---------------");  
    }  
  
    @Override  
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {  
        log.info("---------------視圖渲染之后的操作-------------------------0");  
    }  
}  

這樣我們就可以在用戶請求到達controller層實現登錄攔截了,所有用戶請求都會被攔截,在prehandle方法進行登錄判斷,返回true則驗證通過,否則失敗


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM