本文主要是介绍ArgumentResolver 解密入参,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
//自定义一个解密类,用来解密前端传过来的加密参数
public class MyArgumentResolver extends WebArgumentResolver{@Overridepublic Object resolveArgument(MethodParameter methodParameter,NativeWebRequest nativeWebRequest) throws Exception{//若使用了xxx注解,进入该解析。MySecurityArgs mySecurityArgs = methodParameter.getParameterAnnotation(MySecurityArgs.class);//有MySecurityArgs注解的入参就进入下面解密if(mySecurityArgs!=null){//业务代码,解密前端传来的加密参数return requestDTO;}//如果没有匹配到注解,则返回自带的常量,让下一个解析器解析return UNRESOLVED;}}
//写个空注解,用来标记需要解密的入参
@Retention(RetentionPolicy.RUNTIME)
@Target(values = {ElementType.PARAMETER})
public @interface MySecurityArgs{
}
//接口
@Controller
@RequestMapping("/api")
public class MyOpenApiController extends RestController{@RequestMapping("/query",method=POST)@ResponseBodypublic Map<String,Object> query(@MySecurityArgs EncryptDTO<String> dto){//这里入参加了注解@MySecurityArgs,解密类就会对此参数解密,String requestData = dto.getRequestData();}
}
入参DTO
public class EncryptDTO<E> implements Serializable{private String appId;//RSA加过密private String key;//验签private String sign;private String signAlgorithm="sha256";private E requestData;
}
这篇关于ArgumentResolver 解密入参的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!