本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
注册前 Lambda 触发器
注册前 Lambda 函数在 Amazon Cognito 注册新用户之前触发。它允许您执行自定义验证,以在注册过程中接受或拒绝注册请求。
注册前 Lambda 流程
客户端注册流程

服务器注册流程

该请求包含客户端中的数据,来自传递到用户池 SignUp 和 AdminCreateUser API 方法的 ValidationData
值。
注册前 Lambda 触发器参数
这些是此 Lambda 函数除常用参数以外还必需的参数。
注册前请求参数
- userAttributes
-
表示用户属性的一个或多个名称/值对。属性名称是键。
- validationData
-
在用户注册请求中包含验证数据的一个或多个名称/值对。设置验证数据,然后在用户注册请求中从客户端传递。您可以使用 InitiateAuth 和 AdminInitiateAuth API 操作中的 ClientMetadata 参数将此数据传递给 Lambda 函数。
- clientMetadata
-
一个或多个键值对,您可以将其作为自定义输入内容提供给 Lambda 函数,该函数是为注册前触发器指定的。您可以使用以下 API 操作中的 ClientMetadata 参数将此数据传递给 Lambda 函数:AdminCreateUser、AdminRespondToAuthChallenge、ForgotPassword 和 SignUp。
注册前响应参数
在响应中,如果您想要自动确认用户,则您可以将 autoConfirmUser
设置为 true
。您可以将 autoVerifyEmail
设置为 true
,以自动验证用户的电子邮件。您可以将 autoVerifyPhone
设置为 true
,以自动验证用户的电话号码。
- autoConfirmUser
-
设置为
true
以自动确认用户,否则设置为false
。 - autoVerifyEmail
-
设置为
true
可以设置为所注册用户已通过验证的电子邮件,否则为false
。如果autoVerifyEmail
设置为true
,则email
属性必须具有有效的非空值。否则将出现错误,用户将无法完成注册。如果选择
email
属性作为别名,则在设置了autoVerifyEmail
时将为用户的电子邮件创建别名。如果已存在具有该电子邮件的别名,则别名将移动到新用户,以前用户的电子邮件将标记为未验证。有关更多信息,请参阅 别名概述。 - autoVerifyPhone
-
设置为
true
可以设置为所注册用户已通过验证的电话号码,否则为false
。如果autoVerifyPhone
设置为true
,则phone_number
属性必须具有有效的非空值。否则将出现错误,用户将无法完成注册。如果选择
phone_number
属性作为别名,则在设置了autoVerifyPhone
时将为用户的电话号码创建别名。如果已存在具有该电话号码的别名,则别名将移动到新用户,以前用户的电话号码将标记为未验证。有关更多信息,请参阅 别名概述。
注册教程
注册前 Lambda 函数在用户注册前触发。请参阅这些适用于 JavaScript、Android 和 iOS 的 Amazon Cognito 注册教程。
平台 | 教程 |
---|---|
JavaScript 身份开发工具包 | 通过 JavaScript 注册用户 |
Android 身份开发工具包 | 通过 Android 注册用户 |
iOS 身份开发工具包 | 通过 iOS 注册用户 |
注册前示例:从注册的域自动确认用户
使用注册前 Lambda 触发器,可以添加自定义逻辑来验证注册用户池的新用户。以下是示例 JavaScript 程序,演示如何注册新用户。它将在身份验证过程中调用注册前 Lambda 触发器。
这是一个示例 Lambda 触发器,在使用用户池注册前 Lambda 触发器注册前调用。它使用自定义属性 custom:domain 自动确认来自特定电子邮件域的新用户。任何不在自定义域中的新用户都将添加到用户池,但不会自动确认。
Amazon Cognito 将事件信息传递给 Lambda 函数。然后该函数将同一事件对象返回到 Amazon Cognito,同时在响应中返回任何更改。在 Lambda 控制台中,您可以使用与 Lambda 触发器相关的数据设置测试事件。下面是此代码示例的测试事件:
注册前示例:自动确认和自动验证所有用户
此示例确认所有用户并将用户的 email
和 phone_number
属性设置为“已验证”(如果该属性存在)。此外,如果启用了别名,当设置了自动验证时,将为 phone_number
和 email
创建别名。
如果已存在具有相同电话号码的别名,则别名将移动到新用户,以前用户的 phone_number
将标记为未验证。电子邮件地址也是如此。要防止出现这种情况,可以使用用户池 ListUsers API 查看现有用户是否已在使用新用户的电话号码或电子邮件地址作为别名。
Amazon Cognito 将事件信息传递给 Lambda 函数。然后该函数将同一事件对象返回到 Amazon Cognito,同时在响应中返回任何更改。在 Lambda 控制台中,您可以使用与 Lambda 触发器相关的数据设置测试事件。下面是此代码示例的测试事件: