You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让多个AWS Cognito账户共用同一邮箱?已配置仍报错

解决AWS Cognito允许多用户共用同一邮箱的问题

为什么现有配置仍报错?

默认情况下,AWS Cognito会将邮箱属性标记为唯一,即使你设置了“用户名登录”并“允许邮箱登录”,Cognito依然会检查邮箱是否已存在,从而抛出UsernameExistsException。

核心解决方案:取消邮箱唯一性校验

直接在用户池配置中关闭邮箱的唯一性约束:

  • 进入AWS控制台的Cognito用户池管理页面
  • 选中目标用户池,进入「属性」标签页
  • 在「标准属性」区域找到「邮箱」,取消勾选「唯一」选项
  • 保存配置

完成后,即可用不同用户名+同一邮箱注册新用户,不会再触发邮箱重复的错误。

关于“登录时只会指向其中一个已验证账户”的副作用解释

当允许用邮箱登录时,Cognito会在用户池中查找所有邮箱匹配的账户,但只会返回第一个邮箱已验证的用户,具体表现为:

  • 若两个用户共用同一邮箱且都完成了邮箱验证:用邮箱登录时,Cognito只会匹配到先创建的那个用户,后创建的用户无法通过邮箱登录,只能使用自身用户名登录。
  • 若其中一个用户未验证邮箱:登录时只会匹配到已验证邮箱的用户,未验证的用户同样无法通过邮箱登录。

备选方案:使用预注册Lambda触发器跳过校验

如果需要保留邮箱唯一性的默认逻辑,但针对特定场景允许重复邮箱,可以通过PreSignUp Lambda触发器自定义校验逻辑:

  1. 创建Lambda函数,在函数逻辑中根据业务规则判断是否跳过邮箱唯一性检查
  2. 将该Lambda函数关联到用户池的「预注册」触发器
  3. 在函数中返回如下响应(可根据需求调整自动确认和验证设置):
{
  "autoConfirmUser": true,
  "autoVerifyEmail": false
}

此方法适合需要额外业务逻辑判断的场景,但配置复杂度更高。

额外注意事项

  • 密码重置:当用户通过邮箱请求重置密码时,Cognito只会给第一个匹配到的已验证邮箱用户发送重置链接,其他共用该邮箱的用户无法通过此方式重置密码,只能通过用户名发起重置。
  • 邮箱通知:所有关联该邮箱的用户都会收到Cognito发送的邮件(如验证邮件、密码重置邮件),可能导致用户混淆。

内容的提问来源于stack exchange,提问作者Rachel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 03:12:17