Spring Security --- 自定义Filter

  • 简介
  • 任何 Spring Web 应用本质上只是一个 servlet
  • Security Filter在 HTTP 请求到达你的 Controller 之前过滤每一个传入的 HTTP请求
  • Filter请求过滤器可以帮助进行HttpServletRequest请求和HttpServletResponse响应的过滤
  • 在自定义的Filter过滤器中可以对请求进行过滤, 同时也可以对返回进行相应处理,在方法中实现自定义的业务逻辑处理
  • Spring Security本身所做的事情就是在Spring容器中注册了一系列的Filter
  • 这些Filters在检测到满足条件的URL请求时,会执行其定义的处理过程
  • 默认Filter分析
  • Security本身默认提供了一些Filter来完成其各种功能
  • Security默认的Filter入口在HttpSecurity对象中
  • 在HttpSecurity对象中,实际提供的是各默认Filter的配置类
  • 通过配置类来控制对应Filter的各个属性配置
  • 在配置完成将Filter加载到HttpSecurity中的FilterChain中去
  • 在HttpSecurity中提供了以下默认Filter及其配置类:

  • 默认的Filter并不是在HttpSecurity对象初始化的时候就全部加载,而是根据用户定制情况进行加载
  • 自定义Spring Security配置类中添加自定义Filter
  • 自定义Filter类

  • 为什么继承自OncePerRequestFilter这个类
  • OncePerRequestFilter是Spring Boot里面的一个过滤器抽象类,这个类的作用就是用于继承实现并在每次请求时只执行一次过滤
  • 在自定义的spring security配置类中配置myFilter
  • Filter的实现使用了设计模式中的责任链模式
  • 在添加自定义的Filter时,可以有很多方式,可以指定将自定义的Filter添加到某个指定的Filter之前或者之后,具体怎么实现看用户自己的选择
  • 1-注入自定义Filter的bean对象

  • 2-将自定义Filter的bean对象添加到过滤器链中的用户登录认证校验过滤器之前

  • 3-启动项目, 看看Filter是否生效,随便发送一个请求,看到定义的myFilter被执行了,可以在这个过滤器里面添加自己的逻辑实现

  • 完整配置类代码

猜你喜欢

转载自blog.csdn.net/weixin_59624686/article/details/131226517