SIWE实战:三步打造以太坊身份验证系统

robot
摘要生成中

SIWE使用指南:让你的Dapp更强大

SIWE(Sign-In with Ethereum)是一种在以太坊上验证用户身份的方式,类似钱包发起交易,证明用户对钱包的控制权。目前身份验证已经非常简便,只需在钱包插件中对信息进行签名即可,大多数常见钱包插件都已支持。本文主要讨论以太坊上的签名场景。

SIWE使用手册:如何让你的Dapp更加强大?

是否需要SIWE

如果你的Dapp有以下需求,可以考虑使用SIWE:

  • 有自己的用户体系
  • 需要查询与用户隐私相关的信息

但如果你的Dapp主要是查询功能,如类似etherscan的应用,则不一定需要SIWE。

你可能会疑惑,在Dapp上通过钱包连接后,不就已经证明了钱包所有权吗?这只对前端有效。对于需要后端支持的接口调用,仅传递地址是不够的,因为地址是公开信息,任何人都可以"借用"你的身份。

SIWE使用手册:如何让你的Dapp更加强大?

SIWE原理和流程

SIWE流程可概括为三个步骤:连接钱包 - 签名 - 获取身份标识。

连接钱包

这是常见的Web3操作,通过钱包插件在Dapp中连接钱包。

签名

签名步骤包括获取Nonce值、钱包签名和后端签名校验。

后端生成随机Nonce值并与地址关联。前端获取Nonce值后构建签名内容,包括Nonce值、域名、链ID等,使用钱包提供的方法签名。最后将签名发送给后端。

获取身份标识

后端校验签名通过后,返回用户身份标识(如JWT)。前端后续请求带上地址和身份标识,即可证明钱包所有权。

SIWE使用手册:如何让你的Dapp更加强大?

实践SIWE

我们将使用Next.js开发一个简单的SIWE demo,展示基本流程。注意,此demo仅用于介绍,生产环境使用可能存在安全问题。

准备工作

  1. 安装Next.js

npx create-next-app@14

SIWE使用手册:如何让你的Dapp更加强大?

  1. 安装SIWE相关依赖

npm install antd @ant-design/web3 @ant-design/web3-wagmi wagmi viem @tanstack/react-query --save

SIWE使用手册:如何让你的Dapp更加强大?

  1. 在layout.tsx中引入WagmiProvider

SIWE使用手册:如何让你的Dapp更加强大?

  1. 实现连接钱包按钮

  2. 实现后端接口

    • Nonce生成
    • 签名验证
  3. 优化:使用专门的节点服务提升响应速度

通过以上步骤,我们就实现了一个基本的SIWE登录框架。使用专业节点服务可以大幅提升验证速度,建议在生产环境中采用。

SIWE使用手册:如何让你的Dapp更加强大?

ETH-0.43%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 7
  • 转发
  • 分享
评论
0/400
暂无评论
交易,随时随地
qrCode
扫码下载 Gate App
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)