当前位置: 首页 > 知识库问答 >
问题:

Spring安全中的自定义过滤器位置

孟英叡
2023-03-14

如何在链顶部的Spring Security链中插入多个自定义过滤器?

我可以通过在="FIRST"之后使用位置="FIRST"插入一个,但是我如何在链的顶部添加两个或三个?如果我在="FIRST"之后尝试多个我会收到冲突错误,即我无法将多个过滤器放在同一位置。

    <custom-filter ref="customExceptionJSONFilter" position="FIRST"/>
    <custom-filter ref="logHeadersFilter" after="FIRST"/>
    <custom-filter ref="thirdCustomFilter" after="FIRST"/>       <---- this causes a conflict

是否有基于其他过滤器的定位方法?或者说“第一个1”,“第一个2”,等等?


共有1个答案

颛孙兴旺
2023-03-14

最好的方法可能是将要插入的过滤器包装到单个Filter中。您可以从Spring Security中的VirtualFilterChain复制代码来实现它:https://github.com/spring-projects/spring-security/blob/6be4e3a9fc99d676f367a5e9eed3ea61fbba122c/web/src/main/java/org/springframework/security/web/FilterChainProxy.java#L306

 类似资料:
  • 我正在使用这个环境: Spring 4.0.5 Spring security 3.2.4 在我的环境中,我有一个SSO系统,我需要在这个系统中集成我的web应用程序。这个系统是私人产品。SSO机制的最终结果是在请求头中放置一个参数。所以我在申请中应该做的是: null 此场景类似于CAS集成场景;所以我从CAS集成着手;我写了我的自定义过滤器,我写了我的自定义入口点和处理请求所需的所有其他类,但

  • 我有一个带有OAuth2授权和资源服务器的Spring引导设置。用户可以通过向发出POST请求来获取令牌。到目前为止,一切都很好。 但是,我不想通过基本auth保护,而是通过自定义安全过滤器。 一些简单的例子如何实现这一点将是非常有帮助的。谢谢!

  • 我需要以这样的方式自定义我的身份验证过程: 客户端发送带有“特殊”URL参数的请求(RESTAPI) 我把我的服务器端(2 3)分成两部分——(2)的自定义过滤器,它获取用户名——和(3)的自定义,它通过在数据库中查找名称来构建主体。 但是我不能正确地构建我的-每次它似乎根本不处理过滤器。我认为问题出在第一个(超文本传输协议)节点,但我无法理解我应该为过滤器设置什么位置。这是我的配置: PS-请不

  • 众所周知,WebSecurityConfigurerAdapter类已被弃用。 我试图在filterChain中实现customFilter,但我遇到了一个与新的AuthenticationManager相关的问题。 问题是这样的: 如您所见,身份验证管理器需要AuthenticationConfiguration类作为NotNull参数,没有它,我无法创建CustomAuthentication

  • 演示在网关追加一个header public class CustomFilter implements GlobalFilter, Ordered { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { // 演示在网关追加heade

  • SOFARPC 提供了一套良好的可扩展性机制,为各个模块提供 SPI 的能力。 SOFARPC 对请求与响应的过滤链处理方式是通过多个过滤器 Filter 来进行具体的拦截处理,该部分可由用户自定义 Filter 扩展,自定义 Filter 的执行顺序在内置 Filter 之后。具体方式如下: Bolt Filter 新建自定义 Filter 。 public class CustomFilter