【问题标题】:Adding Cognito custom attributes post pool creation?创建池后添加 Cognito 自定义属性?
【发布时间】:2018-10-09 18:09:12
【问题描述】:

是否可以在创建池后以及使用池后添加 Cognito 其他自定义或标准用户属性?

换句话说,池的 Schema 是完全锁定的,还是我们可以向它添加更多自定义属性?

【问题讨论】:

    标签: amazon-web-services amazon-cognito


    【解决方案1】:

    在 AWS Cognito 上,您有两种类型的属性:

    • 标准属性:这些属性是在创建池时选择的,无法更改

    • 自定义属性:这些属性可以添加。一旦添加,就无法删除或更改

    【讨论】:

    • 所以一旦添加了属性(自定义或标准),是否会锁定池模式?或者我们可以稍后添加其他自定义属性。改变可能意味着很多事情。例如,这可能意味着无法更改自定义属性的类型...
    • 您确实可以继续添加新的自定义属性。通过更改我的意思是你不能重命名它/更改最小/最大值
    【解决方案2】:

    @ThomasVd Berge 有点正确,但答案需要更完整和更有帮助。目前,AWS 设置的自定义属性很差。例如,您无法找到您在控制台中输入的字段,这些字段包含在各种 JS SDK api 返回的用户对象中,除非您在其中包含值。为此,您必须使用 CLI 输入值,这对于旨在让用户使用 GUI 输入数据的真实应用程序是不可行的。

    adminCreateUser api 文档说明了这一点: “对于自定义属性,您必须在属性名称前添加 custom: 前缀。”但是,除非您在我的编辑中将其字符串化,否则这会使 JavaScript 崩溃。

    编辑:

    我添加了用于创建用户表单的代码。通过此设置,我可以添加用户 ID,该字段将显示在控制台的返回对象和用户的 Cognito 数据库中。

    如果您想将数据添加到自定义字段并想对它做一些事情,我上面所说的仍然是正确的。以这种方式添加具有界面的用户是可行的。

    const createUserParams = {
        ...
        UserAttributes: [
           {
           Name: 'custom:user_id',
           Value: enteredData.user_id
           },
    

    【讨论】:

    • 我相信您可以将对象键字符串化,如下所示:params = {'custom:field': 'some value'}。
    • @Vingtoft 我在答案中添加了一些工作代码。我将所有属性名称都放在 ' ' 中,这适用于我的表单。我有完整的 CRUD 为 Cognito 用户工作。我忘了回到这个答案并修复它。谢谢!
    猜你喜欢
    • 2020-02-06
    • 2017-09-08
    • 2021-03-29
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 2012-07-10
    • 2017-11-19
    相关资源
    最近更新 更多