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

Spring自定义过滤器,用于在发送回客户端之前过滤响应

琴宾鸿
2023-03-14

我是Spring启动滤镜的新手

我需要将servlet(impl)产生的响应修改成某种模式。

例如,GetProductImpl将给出

{
      "id": 72167,
      "merchantId": 3,
      "amount": 1,
      "state": "Unused"
}

所以在它返回给客户端之前,我需要将其修改为(有点像将响应放在模块下)(对于所有servlet的所有响应)

{
"module":[{
      "id": 72167,
      "merchantId": 3,
      "amount": 1,
      "state": "Unused"
    }],
"success":true,
"errorCode":null,
"notSuccess":false
}

我寻找任何可以让我做到这一点的方法,因为在impl内部做这件事是没有意义的,因为如果像这样,我需要为所有的impl做(这是很多的,不可行的)。

如果任何人有任何其他方法可以实现这一点也可以,因为我不知道采取什么方法来做到这一点(java示例也可以)。

谢谢。

我目前使用过滤器的方法似乎碰壁了,因为我使用添加过滤器,添加过滤器之前,甚至添加过滤器之后,所有这些都需要有我不知道它是什么的过滤器类,并专注于Web安全的东西(用户名密码身份验证过滤器::类.java)。

.addFilterBefore(JWTAuthenticationFilter(tokenAuthenticationService, objectMapper), UsernamePasswordAuthenticationFilter::class.java)

共有1个答案

阎鸿煊
2023-03-14

通过实现筛选器接口@Add自定义筛选器类。重写 do 筛选器方法来修改您的响应。

定义一个 Bean @Component 注释,如果使用多个筛选器,则@Order注释来标记筛选器执行顺序。

@Component
@Order(1)
public class CustomFilter implements Filter {

  @Override
    public void doFilter(
      ServletRequest request, 
      ServletResponse response, 
      FilterChain chain) throws IOException, ServletException {

  HttpServletRequest req = (HttpServletRequest) request;
  HttpServletResponse res = (HttpServletResponse) response;
  chain.doFilter(request, response);
        // Modify your response  
        res.getContentType();
    }
}
 类似资料:
  • 我有两个spring boot rest控制器,我希望向客户端发送一个标准的JSON响应结构。 标准响应将由响应时间、api响应代码、状态、apiName、响应(根据api而有所不同)组成。见下文: 为了实现这一点,我创建了以下模型类: 为了创建一个通用的响应包装器,我创建了以下响应util类。 现在的问题是,我来自控制器的响应应该以标准方式序列化。下面是我的控制器方法。 在当前的实现中,我要做的

  • 启用Spring Security调试后,它会注册Spring Security DebugFilter.java 我有一个自定义过滤器,我想在spring security DebugFilter之前订购。在调试过滤器之前调用过滤器最合适的方式是什么? 我的自定义过滤器已经是Spring Security过滤器链之前的订单,但它不会在Spring Security调试过滤器之前被调用。

  • 演示在网关追加一个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

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

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