Skip to content

核心业务路由

概述

核心业务路由负责接收各API入口(Web、App、API)的请求,并将其分发到对应的业务处理模块。它是整个交易所后端的核心组件,负责协调各个模块之间的交互。

基本上,Core只负责逻辑转发,目前接入的GRPC服务包括:

ServiceNote
bank-bridge
currency
ip-location
ledger-manager
market
notify
quota
risk
spot
statistical
user-attribute
user
wallet

其它功能包括:

  • 用户注册管理
  • 多因素统一验证

配置

配置文件位于data/config/config.toml(非敏感)和data/private/private.toml(敏感)中。

程序将通过viper读取配置文件。 配置可以被环境变量覆盖,例如

aiignore
# config.toml

[grpc]
port=9081

可以被环境变量覆盖:

bash
export INJ_GRPC.PORT=9003

环境变量的格式为INJ_GRPC.PORT,其中INJ是固定字符串。

多因素统一验证

为了向前端提供多阶段的多因素认证,Core提供了多种验证方法。用户可以在注册、登录、重置密码等关键操作中使用这些验证方法来增强安全性。

验证方法包括:

  • 发送到邮箱的验证码
  • 用户Google Authenticator的TOTP验证
  • 用户密码

验证方式可以为三种里的任意一种或多种组合,用户只有在所有验证方式都通过后,才能完成操作。

验证步骤:

  1. 前端申请一个VerificationId (接口风格统一为xxx_pre,如ga_init_pre)
    • func (c *VerificationService) RequestVerification
  2. 后端根据业务需求决定needTwoFa, needGa, needCredential
  3. 前端根据needTwoFa, needGa, needCredential的值,决定需要收集哪些验证信息
    • 如果needTwoFa=true,则前端需要收集用户的TwoFA代码(调用func (c *VerificationService) SendTwoFaForVerification
    • 如果needGa=true,则前端需要收集用户的Google Authenticator代码
    • 如果needCredential=true,则前端需要收集用户的密码
    • 前端可以通过调用func (c *VerificationService) QueryVerification来获取当前verificationId的状态和需要收集的信息
  4. 前端每收集到一个twoFa/Ga/Credential,通过调用func (c *VerificationService) SubmitVerification进行提交。提交参数为
    • verificationId, code/password, cookie (已登录)
    • verificationId, code/password, email (未登录)
  5. 后端更新这个verificationId的验证状态,返回是否已经完成各项/总体验证
    • func (c *VerificationService) VerifyTwoFa
    • func (c *VerificationService) VerifyGa
    • func (c *VerificationService) VerifyPassword
  6. 前端在done=true时可以提交正式接口
  7. 前端调用正式接口执行工作(xxx,如ga_init)。提交参数中带上verificationId
  8. 后端验证verificationId是否完成所有必须验证,然后执行工作,最后销毁verification(func (c *VerificationService) InvalidateVerification

登录流程例子

🚀 构建现代化数字资产交易平台