跳转至

OTP 测试模式

测试模式让您在开发和测试过程中可以控制 OTP 的处理方式。

常见使用场景包括:

  • 内部测试(例如允许特定账号使用固定验证码进行身份验证,方便测试)。
  • 测试通过 OTP 进行的短信、WhatsApp 或邮件登录,但不希望依赖真实的 OTP 发送。
  • App Store 审核人员。参见使用无密码登录应对 Apple App Store 审核的技巧。

如何启用测试模式

打开管理台,进入高级 > 编辑配置

然后在 yaml 中添加以下内容:

test_mode:
  oob_otp:          # rules defined below apply to all OOB channels (email, sms, whatsapp)
    enabled: true
    rules:
    - regex: .*
      fixed_code: "000000" 
  sms:              # channel specific rules defined here
    enabled: true
    rules:
    - regex: .*
      suppressed: true

工作原理

  • regex:使用正则表达式定义该规则适用的目标邮箱/手机号
  • fixed_code:作为目标 OTP 被接受的 6 位验证码
  • suppressed:默认值为 false。如果设为 true,则不会向目标发送消息
  • enabled
  • 设为 true 以启用测试模式
  • 默认值为 false。此时 OTP 流程会按预期正常工作,该渠道不会接受固定验证码。

示例

场景一:开发环境

在开发环境中,您可能希望使用固定验证码进行测试。

test_mode:
  oob_otp:
    enabled: true
    rules:
    - regex: .*
      fixed_code: "000000"
  sms:
    enabled: true
    rules:
    - regex: ^\+85291231234$ # SMS not suppressed for +85291231234
    - regex: .*
      suppressed: true
  whatsapp:
    enabled: true
    rules:
    - regex: .*
      suppressed: true
  email:
    enabled: true
    rules:
    - regex: .*
      suppressed: true

在这个例子中,

  • oob_otp 中的规则匹配所有目标,因此会使用固定 OTP 000000。
  • 仅 +85291231234 不会被屏蔽短信发送。该号码会通过短信收到 000000,从而可以测试短信发送能力。
  • WhatsApp 和邮件渠道都不会发送任何消息

说明

由于 rules 是从上到下依次匹配的,请始终按照从最具体到最不具体的顺序排列规则。

如果上面示例中 sms 里的规则顺序颠倒,.* 这个正则会先匹配到所有账号,导致更具体的规则永远不会被匹配到。

场景二:应用审核

在应用审核期间,您可以为特定的手机号或邮箱启用“测试模式”,让该账号使用固定 OTP 进行身份验证。这样就可以把该账号提供给应用审核人员,用于完成无密码登录流程

test_mode:
  oob_otp:
    enabled: true
    rules:
    - regex: ^\+85291231234$
      fixed_code: "000000"
  sms:
    enabled: true
    rules:
    - regex: ^\+85291231234$
      suppressed: true
  whatsapp:
    enabled: true
    rules:
    - regex: ^\+85291231234$
      suppressed: true

在这个例子中,

  • 只有 +85291231234 可以使用固定验证码 000000 通过验证,其他账号必须使用真实 OTP。
  • +85291231234 的短信和 WhatsApp 消息发送都会被屏蔽