<!--web3j-->
<dependency>
<groupId>org.web3j</groupId>
<artifactId>core</artifactId>
<version>5.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.web3j/crypto -->
<dependency>
<groupId>org.web3j</groupId>
<artifactId>crypto</artifactId>
<version>5.0.0</version>
</dependency>
/**
* 用户使用钱包地址登录
*
* @param userVO 用户登录vo
* @return {@link UserVO}
*/
@PostMapping("/login")
public UserVO doLogin(@RequestBody UserVO userVO) {
log.info("login param: address: {}, signature: {}, msg: {}", userVO.getAddress(), userVO.getSignature(), userVO.getMsg());
//参数签名验证
if (!NumberUtil.isHexNumberRex40(userVO.getAddress())) {
log.info("login 地址格式非法!");
throw new BusinessException(ResponseCode.ILLEGAL_ADDRESS_FORMAT);
}
if (!Web3SignatureVerification.verifySignature(userVO.getAddress(), userVO.getSignature(), userVO.getMsg())) {
log.info("login 签名校验失败!");
throw new BusinessException(ResponseCode.SIGNATURE_VERIFICATION_FAILED);
}
//验证后的逻辑处理...
}