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、运行项目,然后分别访问测试。

1

2

这个没有访问的到

3

打印日志:

2021-11-24 13:16:24.968  INFO 11868 --- [nio-8080-exec-7] com.lili.interceptor.MyInterceptor       : 拦截的请求路径是/lili
posted @   JamieChyi  阅读(38)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示