管理和搜索用户账户 - Amazon Cognito

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

管理和搜索用户账户

用户池可以包含数百万个用户。对于管理员来说,使用这种规模的数据集是一项挑战。Amazon Cognito 提供了用于查找和修改用户个人资料的工具。查找用户的主要方法是 Amazon Cognito 控制台的 “用户” 选项卡,以及。ListUsers在检索用户信息的方法中,这些选项不会对成本产生影响,例如AdminGetUser

本指南的这一部分包含有关在用户池中查找和更新用户配置文件的信息。

查看用户属性

请使用以下过程在 Amazon Cognito 控制台中查看用户属性。

查看用户属性
  1. 转到 Amazon Cognito 控制台。如果出现提示,请输入您的 AWS 凭据。

  2. 选择 User Pools(用户池)。

  3. 从列表中选择现有用户池。

  4. 选择 Users(用户)选项卡,然后在列表中选择用户。

  5. 在用户详细信息页面,您可以在 User attributes(用户属性)中查看哪些属性与用户关联。

重置用户的密码

请使用以下过程在 Amazon Cognito 控制台重置用户的密码。

重置用户的密码
  1. 转到 Amazon Cognito 控制台。如果出现提示,请输入您的 AWS 凭据。

  2. 选择 User Pools(用户池)。

  3. 从列表中选择现有用户池。

  4. 选择 Users(用户)选项卡,然后在列表中选择用户。

  5. 在用户详细信息页面上,选择 Actions(操作)、Reset password(重置密码)。

  6. Reset password(重置密码)对话框中,查看信息,准备就绪后,选择 Reset(重置)。

    该操作会立即导致向用户发送确认代码,并通过将用户状态更改为 RESET_REQUIRED 来禁用用户的当前密码。Reset password(重置密码)代码的有效期为 1 小时。

搜索用户属性

如果您已创建用户池,则可以在 AWS Management Console的 Users(用户)面板中搜索。您也可以使用 Amazon Cognito ListUsers API,它接受筛选器参数。

您可以搜索以下任何标准属性。自定义属性不可搜索。

  • username(区分大小写)

  • email

  • phone_number

  • name

  • given_name

  • family_name

  • preferred_username

  • cognito:user_status(在控制台中称为Status(状态))(区分大小写)

  • status(在控制台中称为Enabled(已启用))(区分大小写)

  • sub

注意

您还可以使用客户端筛选条件列出用户。服务器端筛选条件匹配的属性不超过 1 个。对于高级搜索,请使用客户端筛选条件,其中包含 AWS Command Line Interface中 list-users 操作的 --query 参数。使用客户端筛选器时,会 ListUsers 返回零个或多个用户的分页列表。您可以连续接收多个结果为零的页面。对返回的每个分页令牌重复查询,直到您收到一个空的分页令牌值,然后查看合并结果。

有关服务器端和客户端筛选的更多信息,请参阅《 AWS Command Line Interface 用户指南》中的筛选 AWS CLI 输出

使用搜索用户 AWS Management Console

如果您已创建用户池,则可以在 AWS Management Console的 Users(用户)面板中搜索。

AWS Management Console 搜索始终是前缀(“以” 开头)搜索。

在 Amazon Cognito 控制台中搜索用户
  1. 转到 Amazon Cognito 控制台。系统可能会提示您输入 AWS 凭证。

  2. 选择 User Pools(用户池)。

  3. 从列表中选择现有用户池。

  4. 选择 Users(用户)选项卡,然后在搜索字段中输入用户的用户名。请注意,某些属性值区分大小写 [例如,Username(用户名)]。

    您还可以通过调整搜索筛选条件来查找用户,将范围缩小到其它用户属性,如 Email(电子邮件)、Phone number(电话号码)或 Last name(姓)。

使用搜索用户 ListUsers API

要从您的应用程序中搜索用户,请使用 Amazon Cognito ListUsers API。它API使用以下参数:

  • AttributesToGet:一组字符串,其中每个字符串均为将针对搜索结果中的每位用户返回的用户属性的名称。要检索所有属性,请不要包含 AttributesToGet 参数或文本字符串值为 null 的请求 AttributesToGet

  • Filter:筛选条件字符串,格式为 "AttributeName Filter-Type "AttributeValue""。筛选条件字符串中的引号必须使用反斜杠 (\) 字符进行转义。例如,"family_name = \"Reddy\""。如果筛选条件字符串为空,ListUsers 将返回用户池中的所有用户。

    • AttributeName:要搜索的属性的名称。一次只能搜索一个属性。

      注意

      您只能搜索标准属性。自定义属性不可搜索。这是因为只有索引属性可搜索,而自定义属性不可索引。

    • Filter-Type:对于精确匹配,请使用 =,例如 given_name = "Jon"。对于前缀 (“starts with”) 匹配,请使用 ^=,例如 given_name ^= "Jon"

    • AttributeValue:必须为每位用户匹配的属性值。

  • Limit:要返回的最大用户数。

  • PaginationToken:可从之前的搜索中获取更多结果的令牌。Amazon Cognito 会在一小时后让分页令牌过期。

  • UserPoolId:应对其执行搜索的用户池的用户池 ID。

所有搜索都区分大小写。搜索结果按以 AttributeName 字符串命名的属性进行升序排列。

使用示例 ListUsers API

以下示例将返回所有用户并包括所有属性。

{ "AttributesToGet": null, "Filter": "", "Limit": 10, "UserPoolId": "us-east-1_samplepool" }

以下示例将返回电话号码以“+1312”开头的所有用户并包括所有属性。

{ "AttributesToGet": null, "Filter": "phone_number ^= \"+1312\"", "Limit": 10, "UserPoolId": "us-east-1_samplepool" }

以下示例将返回姓氏为“Reddy”的前 10 位用户。对于每个用户,搜索结果包含用户的名字、电话号码和电子邮件地址。如果用户池中有 10 个以上相匹配的用户,则响应将包含一个分页标记。

{ "AttributesToGet": [ "given_name", "phone_number", "email" ], "Filter": "family_name = \"Reddy\"", "Limit": 10, "UserPoolId": "us-east-1_samplepool" }

如果上一示例返回分页标记,则以下示例将返回与同一筛选条件字符串相匹配的接下来的 10 位用户。

{ "AttributesToGet": [ "given_name", "phone_number", "email" ], "Filter": "family_name = \"Reddy\"", "Limit": 10, "PaginationToken": "pagination_token_from_previous_search", "UserPoolId": "us-east-1_samplepool" }