为下单添加RSA加签验签

Step 1:

改造OrderController的apply方法,添加请求头参数authId,sign, order参数需要改造成OrderParam类型,OrderParam 实现 SignText接口

public Order apply(@RequestHeader String authId,@RequestHeader String sign, @RequestBody Order order)

{

    BeanUtils.copyProperties(param, order);

}

/** * 签名明文 */

@JsonInclude(JsonInclude.Include.NON_NULL)

@JsonPropertyOrder(alphabetic = true)

public interface SignText {

    default String toText() {

        return JsonUtil.toJson(this);

    }

}

Step 2:

验签AOP

/** * 验签aop */

@Component

@Aspect

public class SignAop {

    @Autowired

    private SignService signService;

    @Before(value = "execution(* com.imooc.seller.controller.*.*(..)) && args(authId,sign,text,..)")

    public void verify(String authId, String sign, SignText text) {

    //authId应该保存在数据库或者配置文件,由对方提供,这里简化。

    String publicKey = signService.getPublicKey(authId);   

    Assert.isTrue(RSAUtil.verify(text.toText(), sign, publicKey), "验签失败!");

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容