springboot拦截器拦截非法请求
spring当中甚至javaweb中,当需要拦截器来拦截一些非法请求时,需要自定义一个拦截器,然后在springmvc配置文件中进行配置。而springboot文档中说明我们可以自定义一个拦截器,然后在自定义WebmvcConfiger里面重写方法注入我们自己的拦截器来实现拦截器功能,方法类似。只是配置方式有点区别。
-
自定义handlerInterceptor
public class MyHandlerInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //登录成功后,有session //判断loginUer是否为空,为空时跳转到index登录页,并提示消息。 if (request.getSession().getAttribute("loginUser")==null){ request.setAttribute("msg","请先登录"); request.getRequestDispatcher("/index.html").forward(request,response); return false; }else { //不为空时放行 return true; } } }
-
配置进SpringMVC,定义拦截请求和放行静态资源。
在自定义WebMvcConfiger中重写addInterceptor
@Configuration public class MyMvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyHandlerInterceptor()) //注入拦截器 .addPathPatterns("/**") //拦截所有请求 .excludePathPatterns("/index.html","/","/user/login","/img/**"); //放行静态资源和登录页面 } }
自定义拦截器完成。