SpringBoot-拦截器
1.概述
对访问路径进行拦截和放行的,底层使用的是java反射机制(动态代理)
2.创建拦截器
-
创建拦截类
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Date; /* 实现HandlerInterceptor接口 重写方法 */ @Component public class LoginInterceptor implements HandlerInterceptor { /* 该方法,处于controller之前执行,进行对请求地址的拦截 true为放行,false为拦截 */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(new Date() + "preHandle:" + request.getRequestURL()); //判断名为user的session是否为null //是则false //否是true return request.getSession().getAttribute("user") != null; } /* 处于controller完毕后,做的一些改动,比如返回前端值为5,可以在这里更改为6 */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(new Date() + "postHandle:" + request.getRequestURL()); } /* 释放内存,清理内存变量 */ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(new Date() + "afterCompletion:" + request.getRequestURL()); } }
-
创建配置类
import com.dragon.interceptor.LoginInterceptor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import javax.annotation.Resource; @Slf4j @Configuration public class MyWebMvcConfig implements WebMvcConfigurer { @Resource private LoginInterceptor loginInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(loginInterceptor) .addPathPatterns("/**") //拦截所有路径 .excludePathPatterns("/user/login");//放行指定路径 } }
当用户未登录时,Interceptor中的preHandler()返回false,进行拦截所有路径(除了"/user/login")
当用户登录成功后,Interceptor中的preHandler()返回true,进行所有路径放行
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix