You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Cognito用户属性更新报错‘User is not authenticated’及正确实现方法咨询

解决AWS Cognito更新用户属性时的「User is not authenticated」错误

我看到你遇到了Cognito更新用户属性时的认证错误,这是因为你没有先完成用户的认证流程就直接调用了updateAttributes方法。Cognito的updateAttributes要求用户必须处于已认证状态(持有有效的会话凭证)才能执行,你的代码只是实例化了CognitoUser对象,但没有完成登录验证步骤。

正确的实现流程

要修改用户属性,你需要先通过authenticateUser方法完成用户登录,在认证成功的回调中再执行属性更新操作:

  • 创建AuthenticationDetails、CognitoUserPool和CognitoUser实例
  • 调用cognitoUser.authenticateUser()完成登录认证
  • 在认证成功的onSuccess回调里,调用updateAttributes修改用户属性

修改后的完整代码

update(username, password) {
  try {
    // 1. 准备认证信息和用户池实例
    const authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails({ 
      Username: username, 
      Password: password 
    });
    const userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
    const userData = { Username: username, Pool: userPool };
    const cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);

    // 2. 先完成用户认证
    cognitoUser.authenticateUser(authenticationDetails, {
      onSuccess: (session) => {
        // 认证成功后,再执行属性更新
        const attributeList = [];
        attributeList.push(new AmazonCognitoIdentity.CognitoUserAttribute({ 
          Name: "custom:role", 
          Value: "some new value" 
        }));

        cognitoUser.updateAttributes(attributeList, (err, result) => {
          if (err) {
            console.log("\n\n\n\nUpdate Error: ", err, "\n\n\n");
            return;
          }
          console.log("属性更新成功:", result);
        });
      },
      onFailure: (err) => {
        console.log("认证失败:", err);
      }
    });
  } catch (e) {
    console.log("\n\n\n\n通用错误:", e, "\n\n\n");
  }
}

关键说明

  • 必须先认证:Cognito的用户属性更新属于需要用户权限的操作,只有当用户通过authenticateUser获取到有效的会话(包含ID Token、Access Token等)后,updateAttributes才能正常执行。
  • 会话有效性:如果你的应用中已经有用户登录后的会话,可以直接复用已认证的CognitoUser对象,不需要每次更新都重新登录。

内容的提问来源于stack exchange,提问作者KIRAN K J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 17:54:07