(1)、编写拦截器
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @Author: wsn
* @Date:2021/11/15 10:38
* PermissionInterceptor 拦截器名称
* (1) 创建一个类,实现接口: HandlerInterceptor springmvc当中提供的
* (2) 重写接口当中的方法
* springmvc.xml 拦截器的注册?
* 方式一:
* 传统方式:编写的拦截器需要在springmvc当中配置文件进行一个配置 在springboot当中可以采用这样的方式:
* 添加一个springmvc的配置文件,在tomcat在启动的时候读取配置文件的内容,完成一个拦截器的注册
*
* 方式二:直接使用springboot提供的0配置,不再提供springmvc的配置文件,而是采用java的形式完成
*/
@Component // 交给spring管理 纳入spring容器当中
public class PermissionInterceptor implements HandlerInterceptor {
/**
* @param request
* @param response
* @param handler
* @return false 不放行,到达不了controller; true 放行到达从controller
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String token = request.getParameter("token");
// 获得前端提供的参数
if (!StringUtils.isEmpty(token)) { // token不是null
if ("123456".equals(token)) {
return true;
}
}
// 指定相应的字符集
response.setContentType("text/html;charset=UTF-8");
response.getWriter().print("权限不足");
// 没有放行
return false;
}
}
(2)、对拦截器进行注册
import com.sn.springboot03.Interceptor.PermissionInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @Author: wsn
* @Date:2021/11/15 11:11
* @Configuration WebConfig添加了注释,表明类是一个配置类,相当于xml当中进行的配置
* springboot会自动执行配置类
*/
@Configuration
public class WebConfig implements WebMvcConfigurer {
/**
* 重写父类当中的方法
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
/**
* 拦截请求的方法
* 自定义的拦截器把静态资源也拦截;实际当中,静态资源要放行;
*
* 方式一:可以指定拦截的路径;addPathPatterns *.do 只拦截do结尾的请求; /** 所有的请求; /*
*
* 方式二:排除哪些路径不拦截;excludePathPatterns
*/
// 注册自定义的拦截器
registry.addInterceptor(new PermissionInterceptor()).
addPathPatterns("/**").
excludePathPatterns("/images/**");
// String[] addPathPatterns = { //拦截所有请求
// "/*"
// };
// String[] excludePatterns = { //不拦截sayHi这个请求 【http://localhost:8080/sayHi】
// "/sayHi"
// };
//如果有多个拦截器,可以继续添加
// registry.addInterceptor(new PermissionInterceptor()).addPathPatterns(addPathPatterns).excludePathPatterns(excludePatterns);
}
}