springboot实现参请求参数和返回参数的加密解密(RequestBodyAdvice、ResponseBodyAdvice、HandlerMethodArgumentResolver)

本文介绍了在SpringBoot中如何实现请求参数和返回结果的加密解密。通过自定义HandlerMethodArgumentResolver实现请求参数的解析和解密,以及使用RequestBodyAdvice和ResponseBodyAdvice接口处理请求体和响应体的加密。详细讲解了两种不同的实现方式,并总结了加密解密的核心步骤。
摘要由CSDN通过智能技术生成
前言

在前后端分离系统的基础架构中,安全框架、令牌鉴权基本已经能保证数据的安全,
但某些场景,仅有鉴权是不够的,一些比较重要的数据,还需要一个针对请求报文加密解密的工具,前端送加密报文,后端直接解密。

实现细节

参考链接
码云上别人写的例子,具有参考意义。
https://gitee.com/licoy/encrypt-body-spring-boot-starter?_from=gitee_search

第一步

添加一个参数解析解析器,通过WebMvcConfigurer来添加一个参数解析器,自定义参数解析器需要实现HandlerMethodArgumentResolver接口,springboot添加参数解析器,可以通过

WebMvcConfigurer的addArgumentResolvers方法来实现,WebMvcConfigurer是一个接口,自定义一个类实现该接口并重写addArgumentResolvers方法。
ApiCryptoConfiguration 类需要添加@Configuration注解,使其标记为一个配置类,其他都是一些辅助属性,关键是要让WebMvcConfigurer生效就可以。
这个生效了之后,每次进入controller的方法之前都会进这里进行参数解析,也是就是把前端的请求参数转换成我们一般说的对象,这里也只是简单的测试了一下,具体使用还得根据自己的业务来实现。

@Configuration
@RequiredArgsConstructor
@EnableConfigurationProperties(ApiCryptoProperties.class)
public class ApiCryptoConfiguration implements WebMvcConfigurer {
   
   private final ApiCryptoProperties apiCryptoProperties;
 
   @Override
   public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
   
      argumentResolvers.add(new ApiDecryptParamResolver(apiCryptoProperties));
   }
 
}

ApiDecryptParamResolver这个类是自定义的参数解析器,自定义的参数解析器需要实现HandlerMethodArgumentResolver接口,主要实现supportsParameter和resolveArgument方法,
supportsParameter方法返回为true的时候会执行下面的解析参数方法(resolveArgument),resolveArgument方法就是把参数解密之后然后转换成方法的参数对象,到这里基本上就完成了加密参数解析,且转换成方法参数对象的功能。

@RequiredArgsConstructor
public class ApiDecryptParamResolver implements HandlerMethodArgumentResolver {
   
   private final ApiCryptoProperties properties;
 
   @Override
   public boolean supportsParameter(MethodParameter parameter) {
   
   //参数是否需要加密,是根据自己的业务来定的。
   //一般是通过自定义注解来实现。
      return AnnotatedElementUtils.hasAnnotation(parameter.getParameter(), ApiDecrypt.class);
   }
 
   @Nullable
   @Override
   public Object resolveArgument(MethodParameter 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值