Firebase Auth能否不创建用户仅发送邮箱验证码进行二次验证?
可行方案说明
完全可以实现,核心是做一套独立于用户创建流程的邮箱验证码收发逻辑,具体步骤如下:
新增独立的「发送邮箱验证码」接口
- 接口参数只需要:已认证用户的标识(比如用户ID/登录态token)、待验证的邮箱地址
- 内部逻辑:先校验用户是否已通过手机号完成认证(查用户数据库确认状态),同时检查该邮箱未被其他用户绑定;校验通过后生成6位随机验证码,把「邮箱-验证码-用户ID」绑定存入Redis并设置5分钟过期,最后调用邮件服务发验证码到目标邮箱
- 全程不需要调用任何创建用户的接口,只针对已存在的手机号认证用户操作
配套新增「校验邮箱验证码」接口
- 接口参数:用户ID、邮箱地址、输入的验证码
- 内部逻辑:从Redis取出对应邮箱的验证码做比对,验证通过后直接更新用户数据库,把该邮箱标记为「已验证」状态即可
必加的安全限制
- 接口限流:同一邮箱/用户ID每分钟最多发送1次验证码,防止恶意刷量
- 登录态校验:发送验证码接口必须验证用户的登录token,确保只有当前已登录的用户才能发起邮箱验证请求
- 邮箱唯一性:发送前检查邮箱是否已被其他用户绑定,避免重复验证
内容的提问来源于stack exchange,提问作者dontknowhy
相关产品推荐
相关产品推荐

