SpringBoot實現攔截器

首先,你的項目要能跑起來,且基於springboot的

boot的攔截器不用配置web.xml,按照特定名字書寫,它會自動識別(位置隨便放,只要在代碼目錄下就可以)

1.攔截器 SessionInterceptor.java

package com.hfanss.blog.utils;

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

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

/**
 * 功能描述:攔截器實現類
 * @author: hfanss
 * @date: 2019年6月25日 下午9:23:32 
 */
public class SessionInterceptor implements HandlerInterceptor
{

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
	{
		System.err.println("攔截器進來了,路徑爲:"+request.getRequestURI());
		if (request.getRequestURI().equals("/admin/**"))
		{
			//TODO  驗證登錄token
			return true;
		}else {
			
			return true;
		}
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception
	{
		// TODO Auto-generated method stub

	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception
	{
		// TODO Auto-generated method stub

	}

}

2.路徑 SessionConfiguration.java

package com.hfanss.blog.utils;

import java.util.List;

import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.validation.MessageCodesResolver;
import org.springframework.validation.Validator;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 功能描述:配置攔截器路徑 /admin/
 * @author: hfanss
 * @date: 2019年6月25日 下午9:37:21 
 */
@Configuration
public class SessionConfiguration implements WebMvcConfigurer
{
	
	@Override
	public void addInterceptors(InterceptorRegistry registry)
	{
		registry.addInterceptor(new  SessionInterceptor()).addPathPatterns("/admin/**");
		
	}
	.....
}

運行項目,攔截器實現類方法內打個斷點,會發現所有帶 admin的路徑都會被攔截到

可以根據需要定義攔截的路徑,攔截器常用的功能也就用戶登錄控制

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