栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Springboot中拦截器的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/591784.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号