Springboot中拦截器的使用
Springboot中拦截器的使用
什么是拦截器:
拦截器正如它的名字,就是我们一些资源在用户没有权限的情况下,不想被访问到,这个时候我们就需要用到拦截器。可以高效的对我们所发出的请求进行拦截操作。
过滤器与拦截器有什么区别:
简单来说,过滤器一般情况用来过滤一些字符,编码等问题,而拦截器一般是对我们发出的请求进行拦截,过滤器比拦截器要先执行。
具体使用步骤
1、编写一个controller,写几个请求:
注意:当前所有请求都可以访问的到,我们以拦截"/lili"
这个请求为例子
@RestController
public class HelloController {
/**
* 这个请求是可以被访问到的
*/
@RequestMapping(value = {"/","/hello"})
public String getHello(){
return "hello,I am login";
}
/**
* 这个请求可以被访文的到
*/
@RequestMapping("/hello2")
public String getHello2(){
return "你可以访问到我";
}
/**
* 这个请求不能被访文的到
*/
@RequestMapping("/lili")
public String getLili(){
return "你访问不到我";
}
}
2、编写拦截器需要实现HanderInterceptor接口
@Slf4j
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
log.info("拦截的请求路径是{}" ,request.getRequestURI());
// 获取session
HttpSession session = request.getSession();
Object user = session.getAttribute("user");
return user!=null;
}
}
3、把我们写的拦截器注入到容器中(实现WebMvcConfigurer的addInterceptors)
进行配置拦截器规则。
@Configuration
public class MyWebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 把我们写的过滤器传进来
registry.addInterceptor(new MyInterceptor())
// 首先过滤所有请求
.addPathPatterns("/**")
// 用来排除需要过滤的请求
.excludePathPatterns("/","/hello","/hello2");
}
}
4、运行项目,然后分别访问测试。
这个没有访问的到
打印日志:
2021-11-24 13:16:24.968 INFO 11868 --- [nio-8080-exec-7] com.lili.interceptor.MyInterceptor : 拦截的请求路径是/lili
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!