首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新AWS认知用户的自定义属性,而不将用户登录到

更新AWS认知用户的自定义属性,而不将用户登录到
EN

Stack Overflow用户
提问于 2019-11-28 10:41:43
回答 1查看 1.8K关注 0票数 1

我正在做一个新的项目,我第一次同时使用Vue js和AWS认知。我发现认知文档很难找到,或者根本找不到。

在Vue应用程序中,我使用扩容来处理所有的用户管理,这些管理都很好。

在我的用户池中,我添加了两个自定义属性:

  • custom:first_name
  • custom:last_name

在Vue应用程序中,我向.net核心api发布了一个引用请求,其中包含了各种详细信息,以及登录的用户的认知用户名和名字和姓氏:

代码语言:javascript
复制
{
    "details": "all kinds of quote details",
    "user": {
        "cognitoUsername": "fd17f624-cf31-11e9-904a-88d7f67d5c52",
        "firstName": "Carel",
        "lastName": "Nel"
    }
}

通过使用Amazon.Extensions.CognitoAuthentication库,我能够使用它的所有属性来查询认知用户记录:

代码语言:javascript
复制
cognitoUser = await _pool.FindByIdAsync(model.User.CognitoUsername);

接下来,我的计划是在所有其他验证检查通过之后,从这个API方法更新池中的custom:first_namecustom:last_name属性。如果尝试更新,将得到以下错误:

代码语言:javascript
复制
if (attributesChanged)
{
    await cognitoUser.UpdateAttributesAsync(userAttributes);
    // Error: "Database Failure - User is not authenticated."
}

为了测试这一点,我尝试了以下方法,然后进行了工作:

代码语言:javascript
复制
if (attributesChanged)
{
    await _signInManager.PasswordSignInAsync(cognitoUser, "password", false, false);
    await cognitoUser.UpdateAttributesAsync(userAttributes);
}

因此,如果我用密码登录用户,我就能够成功地更新认知池中的自定义属性。不过,我不想这么做。我是否可以在API上设置某种管理用户配置,允许我在没有特定用户登录的情况下更新用户池记录,或者我(应该)将登录用户的一些jwt令牌从Vue应用程序传递到API,并以某种方式使用它来确保身份验证?

EN

回答 1

Stack Overflow用户

发布于 2019-11-28 10:59:02

您需要为应用程序客户端分配aws.cognito.signin.user.admin作用域。然后,您应该能够通过该用户修改用户属性。

https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-idp-settings.html

检查有关OAuth作用域的“允许的aws.cognito.signin.user.admin Scopes”部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59086932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档