为什么我的用户无权使用 aws-amplify api 和 cognito 身份验证执行 graphql 突变?

问题描述 投票:0回答:2

我的 Vuejs 网站上有一个页面,允许用户更新他们的个人资料详细信息,包括名字、姓氏、电子邮件地址和电话号码。当用户提交表单时,会调用 aws-amplify api 的端点 graphqlOperation()。

API.graphql(graphqlOperation(updateUser, { input: newUserDetails }))

其中 updateUser 突变定义如下...

export const updateUser = /* GraphQL */ `
  mutation UpdateUser(
    $input: UpdateUserInput!
    $condition: ModelUserConditionInput
  ) {
    updateUser(input: $input, condition: $condition) {
      id
      userName
      firstName
      lastName
      email
      phoneNumber
      userDetails
      userNotes
      role
      _version
      _deleted
      _lastChangedAt
      createdAt
      updatedAt
    }
  }

newUserDetails 如下...

 const newUserDetails = {
    id: 17347,
    firstName: 'Sally',
    lastName: 'Smith',
    email: '[email protected]',
    phone: '+19827772222',
  }

我正在使用 AWS Amplify/Cognito 进行身份验证。

为什么提交此表单会导致 401 未经授权的错误?

如果此错误是由于我的 Cognito 用户组权限错误造成的,请链接文档解释如何允许此用户组调用此突变函数。

authorization amazon-cognito aws-amplify http-status-code-401
2个回答
1
投票

如果您配置了多种身份验证模式,那么您需要指定 Cognito:

const newArtist = await API.graphql({
      query: updateUser,
      variables: {input: user},
      authMode: 'AMAZON_COGNITO_USER_POOLS'
    });

0
投票

小心你没有限制这样的财产

所有者:String @auth(规则:[{允许:所有者,操作:[读取,创建]}])

并尝试删除父级,当属性没有删除操作时,这将阻止父级被删除。

© www.soinside.com 2019 - 2024. All rights reserved.