如何在同一Cognito用户池中发送不同的验证电子邮件

时间:2019-10-22 12:18:14

标签: amazon-cognito

我正在使用Amazon-Cognito进行应用程序用户访问。 我的用户池中有两个不同的组。 我想向每个用户发送不同的电子邮件,具体取决于他所属的组。

问题在于,电子邮件验证是在用户在池中创建时发送的,而不是在链接到组之后发送的。

有办法吗? 有什么帮助吗?建议?

1 个答案:

答案 0 :(得分:0)

经过大量挖掘,我找到了解决方案。 解决方案是使用AWS Cognito Lambda。

使用AWS Cognito Lambda进行SignUp或AdminCreateUser事件取决于您的应用程序架构。 使用SignUp或AdminCreateUser函数创建用户时,可以通过该对象处的clientMetadata条目传递元数据。

例如(来自AWS Docs):

{
   "ClientMetadata": { 
      "string" : "string" 
   },
   "DesiredDeliveryMediums": [ "string" ],
   "ForceAliasCreation": boolean,
   "MessageAction": "string",
   "TemporaryPassword": "string",
   "UserAttributes": [ 
      { 
         "Name": "string",
         "Value": "string"
      }
   ],
   "Username": "string",
   "UserPoolId": "string",
   "ValidationData": [ 
      { 
         "Name": "string",
         "Value": "string"
      }
   ]
}

根据docs

  

clientMetadata

     

您可以提供的一个或多个键值对   您为预先指定的Lambda函数的自定义输入   注册触发器。您可以通过以下方式将此数据传递给Lambda函数:   在以下API操作中使用ClientMetadata参数:   AdminCreateUser,AdminRespondToAuthChallenge,ForgotPassword和   注册。

因此,将groupM作为一个条目传递到clientMetadata内部:

"ClientMetadata": { 
    "Group": "MyNiceGroup" 
},
...

在lambda实现中,根据传入组确定要分发的电子邮件。