我正在做一个新的项目,我第一次同时使用Vue js和AWS认知。我发现认知文档很难找到,或者根本找不到。
在Vue应用程序中,我使用扩容来处理所有的用户管理,这些管理都很好。
在我的用户池中,我添加了两个自定义属性:
在Vue应用程序中,我向.net核心api发布了一个引用请求,其中包含了各种详细信息,以及登录的用户的认知用户名和名字和姓氏:
{
"details": "all kinds of quote details",
"user": {
"cognitoUsername": "fd17f624-cf31-11e9-904a-88d7f67d5c52",
"firstName": "Carel",
"lastName": "Nel"
}
}通过使用Amazon.Extensions.CognitoAuthentication库,我能够使用它的所有属性来查询认知用户记录:
cognitoUser = await _pool.FindByIdAsync(model.User.CognitoUsername);接下来,我的计划是在所有其他验证检查通过之后,从这个API方法更新池中的custom:first_name和custom:last_name属性。如果尝试更新,将得到以下错误:
if (attributesChanged)
{
await cognitoUser.UpdateAttributesAsync(userAttributes);
// Error: "Database Failure - User is not authenticated."
}为了测试这一点,我尝试了以下方法,然后进行了工作:
if (attributesChanged)
{
await _signInManager.PasswordSignInAsync(cognitoUser, "password", false, false);
await cognitoUser.UpdateAttributesAsync(userAttributes);
}因此,如果我用密码登录用户,我就能够成功地更新认知池中的自定义属性。不过,我不想这么做。我是否可以在API上设置某种管理用户配置,允许我在没有特定用户登录的情况下更新用户池记录,或者我(应该)将登录用户的一些jwt令牌从Vue应用程序传递到API,并以某种方式使用它来确保身份验证?
发布于 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”部分。
https://stackoverflow.com/questions/59086932
复制相似问题