我的应用程序收到一个加密的有效负载,因此我必须解密该对象的每个值。之后,我必须用相同的格式加密有效负载并发送响应。
我需要的是一种在有效载荷到达控制器之前对其进行拦截的方法,该方法可以拦截并拦截对数据进行加密的响应。
我正在尝试使用javax.servlet过滤器,但我不知道如何获取主体,更改其值并将其重新设置。
我已经尝试过拦截器,但是在更改请求正文时遇到了同样的问题。
@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"
}
}
答案 0 :(得分:0)
如果您的应用程序使用Spring框架,则可以使用AOP(面向方面的程序设计)围绕过滤器定义一个方面,该方面将对数据进行解密,调用filter方法并拦截响应以对其进行重新加密。