0
点赞
收藏
分享

微信扫一扫

关于rabbitmq的prefetch机制

盖码范 2024-04-05 阅读 13

在我们日常的Java开发中,有时候我们想保证数据传输的安全,对接口出参加密,入参解密。

但是不想写重复代码,我们希望有一个通用starter,提供通用加密解密功能

hutool-crypto提供了很多加密解密工具,包括对称加密,非对称加密,摘要加密等等。

问题:在request中存在流只能读一次问题

在接口调用链中,request的请求流只能调用一次,处理之后,如果之后还需要用到请求流获取数据,就会发现数据为空。

比如使用了filter或者aop在接口处理之前,获取了request中的数据,对参数进行了校验,那么之后就不能在获取request请求流了

解决:

我们可以通过继承HttpServletRequestWrapper,将请求中的流copy一份,复写getInputStream和getReader方法供外部使用。每次调用后的getInputStream方法都是从复制出来的二进制数组中进行获取,这个二进制数组在对象存在期间一致存在。

使用Filter过滤器,在一开始,替换request为自己定义的可以多次读取流的request。

这样就实现了流的重复获取

InputStreamHttpServletRequestWrapper

package xyz.hlh.cryptotest.utils;

import org.apache.commons.io.IOUtils;

import javax.servlet.ReadListener;
import
举报

相关推荐

0 条评论