【springboot】配置interceptor拦截器
程序员文章站
2022-04-19 21:27:29
...
【springboot】配置interceptor拦截器
springboot如何配置自定义的Filter过滤器?
一、实现步骤
- 实现拦截器接口
- 将拦截器注册到spring容器中
二、具体实现例子
-
实现拦截器接口,例如登陆拦截器
/** * 登陆检查, */ public class LoginHandlerInterceptor implements HandlerInterceptor { //在业务处理器处理请求之前被调用 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Object user = request.getSession().getAttribute("loginUser"); if(user == null){ //未登陆,返回登陆页面 request.setAttribute("msg","没有权限请先登陆"); request.getRequestDispatcher("/index.html").forward(request,response); return false; }else{ //已登陆,放行请求 return true; } } //postHandle:在业务处理器处理请求执行完成后,生成视图之前执行。后处理(调用了Service并返回ModelAndView,但未进行页面渲染),有机会修改ModelAndView (这个博主就基本不怎么用了); @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } //afterCompletion:在DispatcherServlet完全处理完请求后被调用,可用于清理资源等。返回处理(已经渲染了页面); @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
-
注册拦截器
创建MyWebConfigurer类实现WebConfigurer接口
@Configuration public class MyWebConfigurer implements WebMvcConfigurer { @Bean LoginHandlerInterceptor loginHandlerInterceptor(){ return new LoginHandlerInterceptor(); } /* * 配置拦截器 * */ @Override public void addInterceptors(InterceptorRegistry registry) { // 注册该自定义的登陆拦截器 registry.addInterceptor(loginHandlerInterceptor()).addPathPatterns("/**") .excludePathPatterns("/index.html") .excludePathPatterns("/api/login") .excludePathPatterns("/api/logout"); } }
-
以上、即可生效。为自定义拦截器的小Demo