前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Web3.0开发实战!(1) 用户钱包登录

Web3.0开发实战!(1) 用户钱包登录

作者头像
Cheng_Blog
发布2023-03-19 14:27:26
9350
发布2023-03-19 14:27:26
举报
文章被收录于专栏:Cheng's BlogCheng's Blog

一、 准备工作

  1. 建立一个metamask钱包或者tp钱包(其他的也可)
  2. 搭建一个java项目

二、登录流程

  1. 客户端可以使用自定义字符拉取钱包进行签名(一般用WalletConnect组件连接钱包)
  2. 连接钱包后拿到用户签名前后的字符,并与钱包地址一起给到服务端
  3. 服务端接收到后,使用web3j提供的方法进行数据合法性校验
  4. 校验成功后持久化处理

三、代码示例

  1. 导入web3开发包
代码语言:javascript
复制
<!--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>
  1. 开发一个登陆接口
代码语言:javascript
复制
     /**
     * 用户使用钱包地址登录
     *
     * @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);
        }
       //验证后的逻辑处理...
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-01-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 准备工作
  • 二、登录流程
  • 三、代码示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档