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中的规则匹配所有目标,因此会使用固定 OTP000000。- 仅
+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 消息发送都会被屏蔽