java在到达控制器之前和离开控制器之后解密/加密有效负载
我的应用程序收到一个加密的负载,我必须解密对象的每个值。之后,我必须用相同的格式加密有效负载并发送响应
我需要的是一种方法,在有效负载到达控制器解密并截获加密数据的响应之前截获有效负载
我正在尝试使用javax的过滤器。但我不知道如何获取主体,更改其值并将其设置回原位
我已经尝试了一个拦截器,但是我在更改请求主体时遇到了同样的问题
@Component
@Order(1)
public class CryptoFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
// code to decrypt request body goes here
filterChain.doFilter(request, response);
// code to encrypt response body goes here
}
}
请求主体如下所示:
{
"key1": "098f6bcd4621d373cade4e832627b4f6",
"key2": "098f6bcd4621d373cade4e832627b4f6",
"key3": {
"key4": "098f6bcd4621d373cade4e832627b4f6"
}
}
过滤器之后,我需要控制器上的这个:
{
"key1": "decrypted",
"key2": "decrypted",
"key3": {
"key4": "decrypted"
}
}
# 1 楼答案
如果您的应用程序使用Spring框架,则可以使用AOP(面向方面编程)在过滤器周围定义一个方面,该方面将解密数据、调用过滤器方法并截获响应以重新加密数据
https://docs.spring.io/spring/docs/2.5.x/reference/aop.html