Skip to content

身份认证模块

身份认证模块提供基于 web3 的认证服务,使用 SIWE (Sign-In with Ethereum) 标准。用户可以通过 Ethereum 钱包进行身份认证,无需创建传统账户。

认证流程

  1. 用户连接钱包
  2. 客户端从服务器请求 nonce
  3. 用户使用钱包签名 SIWE 消息
  4. 客户端将签名消息发送到服务器进行验证
  5. 服务器返回包含过期时间的 token 对象用于后续认证请求

接口说明

获取 Nonce

路径: /api/auth/nonce
方法: GET
认证: 无需认证

请求字段

字段名必需类型说明
addressstringEthereum 钱包地址

响应字段

字段名必需类型说明
noncestring用于 SIWE 消息的随机数
messagestring预格式化的 SIWE 签名消息

验证签名

路径: /api/auth/verify
方法: POST
认证: 无需认证

请求字段

字段名必需类型说明
messagestring已签名的 SIWE 消息
signaturestring钱包签名
addressstringEthereum 钱包地址
referral_codestring推荐码(仅在首次验证时生效)

响应字段

字段名必需类型说明
tokenAuthToken用于认证请求的 JWT 信息
userUser用户信息

刷新 Token

路径: /api/auth/refresh
方法: POST
认证: 需要 JWT 认证

请求字段

字段名必需类型说明
---无需请求体

响应字段

字段名必需类型说明
tokenAuthToken新的 JWT 信息

登出

路径: /api/auth/logout
方法: POST
认证: 需要 JWT 认证

请求字段

字段名必需类型说明
---无需请求体

响应字段

字段名必需类型说明
successboolean登出成功状态
messagestring确认消息

AuthToken 对象定义

AuthToken 对象包含以下字段:

字段名类型说明
tokenstring用于认证的 JWT 字符串
expnumber过期时间戳(单位:秒)

JWT Token 使用说明

对于需要认证的接口,请在请求头中包含最新的 token 对象中的 token 字段:

Authorization: Bearer <token.token>

exp 字段表示 JWT 过期时间(Unix 时间戳,秒),当 token 过期时请调用刷新接口获取新的 token 对象。

推荐功能说明

  • referral_code 参数仅在用户首次验证签名时记录,用于后续推荐关系建立
  • 推荐关系的实际建立是异步的,当被推荐人成功参与游戏时才会生效
  • 老用户再次登录时,即使提供 referral_code 也会被忽略