首页 > 其他分享 >Filter&Interceptor

Filter&Interceptor

时间:2024-01-20 16:24:12浏览次数:32  
标签:拦截器 请求 Spring Filter 过滤器 Interceptor

Filter&Interceptor

目录

1. Filter-过滤器

在 Spring Boot 中,过滤器(Filter)是用于在 Servlet 容器级别拦截和处理 HTTP 请求的组件。它们通常用于实现诸如身份验证、授权、日志记录、请求和响应的数据转换等功能。过滤器位于整个请求处理链的最前端,因此在请求到达 Spring 应用的任何其他组件之前,都会先经过过滤器处理。

2. Interceptor-拦截器

在Spring Boot中,拦截器分为两类: 一种是对请求进来的url进行拦截,HandlerInterceptor接口; 一种是对发送出去的请求进行拦截,ClientHttpRequestInterceptor。

比较

特征 filter interceptor
处理层级 servlet容器级别 Spring Mvc 层级
使用场景 通用功能:如身份验证、授权、日志记录 与spring框架相关的功能,如身份验证,请求参数处理
实现方式 回调函数 动态代理(反射)
优势 处理任何 Web 应用的请求,更大的控制范围 紧密集成于 Spring MVC,可以访问 Spring 上下文和其他组件
实现接口 javax.servlet.Filter org.springframework.web.servlet.HandlerInterceptor 或 org.springframework.http.client.ClientHttpRequestInterceptor

过滤器(Filter) :可以拿到原始的http请求,但是拿不到你请求的控制器和请求控制器中的方法的信息。

拦截器(Interceptor):可以拿到你请求的控制器和方法,却拿不到请求方法的参数。

切片(Aspect): 可以拿到方法的参数,但是却拿不到http请求和响应的对象

应用场景

拦截器应用场景

拦截器本质上是面向切面编程(AOP),符合横切关注点的功能都可以放在拦截器中来实现,主要的应用场景包括:

  • 登录验证,判断用户是否登录。
  • 权限验证,判断用户是否有权限访问资源,如校验token
  • 日志记录,记录请求操作日志(用户ip,访问时间等),以便统计请求访问量。
  • 处理cookie、本地化、国际化、主题等。
  • 性能监控,监控请求处理时长等。
  • 通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现)

过滤器应用场景

1)过滤敏感词汇(防止sql注入)

2)设置字符编码

3)URL级别的权限访问控制

4)压缩响应信息

参考文献

https://juejin.cn/post/7220042622525603896

https://segmentfault.com/a/1190000037755221

标签:拦截器,请求,Spring,Filter,过滤器,Interceptor
From: https://www.cnblogs.com/TRY0929/p/17976649

相关文章

  • Spring Boot入坑-AOP、Interceptor和Filter
    AOP概述面向切面编程(AspectOrientedProgramming),从不同的维度或角度给已有程序添加附加功能的一种技术实现的方式是Spring容器为程序创建代理,让调用方无感知的调用指定方法,在运行期间动态的“织入”其他逻辑主要目的是为了解耦弥补OOP中只能继承类或实现接口进行功......
  • Java登陆第三十一天——Filter
    好好好,好久不见了。不多说,继续干。Filter即过滤器,专用于过滤客户端所发送的请求。生活中的过滤器筛子地铁闸门公司前台保安以上举例都是生活中的过滤器。在代码中,过滤器的作用是控制访问资源。Filter所有的过滤器都要实现Filter接口,Filter接口方法如下:方......
  • 基于Minifilter的文件过滤驱动以及与应用层通讯
    前一段时间在做一个文件过滤系统,为了配合公司的产品使用,希望对指定目录禁止访问。一开始使用的是sfilter的框架,很多事情需要自己做,创建过滤驱动的控制设备,创建符号链接,设置IRP例程,设置FASTI/O例程,用这个框架做了一半,与应用层通讯比较麻烦,就又去学习了Minifilter框架,这个框架就非......
  • AdaMCL: Adaptive Fusion Multi-View Contrastive Learning for Collaborative Filter
    AdaMCL:AdaptiveFusionMulti-ViewContrastiveLearningforCollaborativeFilteringAbstract​ 大多数基于CL的方法只利用原始的用户-项目交互图来构造CL任务,缺乏对高阶信息的显示利用。而且即使是使用高阶信息的基于CL的方法,高阶信息的接收字段也是固定的,没有考虑到节点之......
  • Linux--netfilter框架
    目录简介五个钩子简介Netfilter是Linux内核中的一个数据包处理框架,它提供了一种灵活的机制,允许内核模块注册回调函数来处理网络数据包。Netfilter框架的主要功能包括数据包过滤、网络地址转换(NAT)、端口转换等。它允许注册的回调函数在数据包经过特定的处理点时被调用,从而实现对......
  • FFmpeg之AVFilter
    (目录)  filter,可以翻译为过滤器,滤镜。在FFmpeg中有多种多样的滤镜,你可以把他们当成一个个小工具,专门用于处理视频和音频数据,以便实现一定的目的。如overlay这个滤镜,可以将一个图画覆盖到另一个图画上transport这个滤镜可以将图画做旋转等等。一、概述  FFMPEG除了具有强大......
  • 案例学Python:filter()函数的用法,高级!
    大家好,这里是程序员晚枫,又来分享有用的Python知识了。Python之所以好用,是因为有大量用于科学计算的内置函数和第三方库。用好这些第三方库,可以显著提高我们编程的速度和质量。今天我们一起来看一下Python中一个重要的内置函数:filter。filter()是Python中的一个内置函数,用于......
  • day34 基于ServiceEntry,Sidecar,Envoy Filter实战场--深入剖析Istio的安全策略(10.8-10.
    10.8-1-基于ServiceEntry,Sidecar,EnvoyFilter实战场一、ServiceEntry实战场景1.1部署Istio提供的sleep示例istioctlkube-inject-fsamples/sleep/sleep.yaml|kubectlapply-f-1.2部署busybox#busybox-dp.yamlapiVersion:v1kind:Servicemetadata:name:busybo......
  • python中的Map和Filter
    map会将⼀个函数映射到⼀个输入列表的所有元素上。这是它的规范:规范map(function_to_apply,list_of_inputs)大多数时候,我们要把列表中所有元素⼀个个地传递给⼀个函数,并收集输出。比方说:items=[1, 2, 3, 4, 5]squared =[]for iinitems:squared.append(i**2)Ma......
  • Filter过滤和Listener监听器
    过滤器Filter简介Filter也称之为过滤器,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet,静态图片文件或静态html文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能处理编码。它主要用......