为下单添加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), "验签失败!");

    }

}

你可能感兴趣的:(为下单添加RSA加签验签)