FilterChain的详解

FilterChain的作用

过滤器链作用:当一个filter收到请求的时候,调用chain.doFilter才可以访问下一个匹配的filter,若当前的filter是最后一个filter,调用chain.doFilter才能访问目标资源

多个filter的执行顺序是由web.xml中filter-mapping的位置决定的.

dispatcher

REQUEST:默认值,过滤从浏览器发送过来的请求和重定向 不过滤转发

FORWARD:只过滤转发过来的请求

了解:

INCLUDE:只过滤包含过来的请求

ERROR:只过滤错误过来的请求

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Spring Security 中,SecurityFilterChain 是一个过滤器链条,负责对请求进行安全控制。在 Spring Security 5.7 中,SecurityFilterChain 的 filterChain 方法是用来创建这个过滤器链的。 该方法的参数 HttpSecurity 是用来配置安全控制的对象,也就是说,我们可以利用这个对象来添加一些安全控制相关的配置。例如: ``` @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/public/**").permitAll() .antMatchers("/private/**").authenticated() .and() .formLogin(); } ``` 以上代码中,我们通过 `http.authorizeRequests()` 方法来配置请求授权规则(即哪些请求需要授权),然后通过 `http.formLogin()` 方法来配置登录认证相关的信息。 接下来,我们就来看一下 filterChain 方法的具体实现。该方法返回的是一个 SecurityFilterChain 对象,它包含了一个过滤器链条(即一个 FilterList 对象)。而这个过滤器链条中包含了多个过滤器,每个过滤器都负责不同的安全控制操作。 在 filterChain 方法中,Spring Security 会通过一系列的过滤器来完成安全控制。这些过滤器包括了: - ChannelProcessingFilter:用来控制请求的协议类型(HTTP 或 HTTPS)。 - SecurityContextPersistenceFilter:用来持久化 SecurityContext 对象。 - ConcurrentSessionFilter:用来控制同一用户的并发登录会话数。 - LogoutFilter:用来处理用户退出登录相关的逻辑。 - UsernamePasswordAuthenticationFilter:用来处理基于表单的登录认证逻辑。 - RequestCacheAwareFilter:用来处理请求缓存相关的逻辑。 - SecurityContextHolderAwareRequestFilter:用来为请求添加 SecurityContextHolderAwareRequestWrapper 包装器,以便在请求中获取当前用户的安全上下文信息。 - AnonymousAuthenticationFilter:用来处理匿名用户的逻辑。 - SessionManagementFilter:用来管理用户的会话信息。 - ExceptionTranslationFilter:用来处理异常信息。 - FilterSecurityInterceptor:用来控制访问资源的权限。 在 filterChain 方法中,我们可以通过一系列的 `http.addFilterBefore(filter, beforeFilter)` 或 `http.addFilterAfter(filter, afterFilter)` 方法来添加自定义的过滤器,并且指定它们的位置。这样,我们就可以在 Spring Security 的过滤器链中添加我们自己的安全控制逻辑了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值