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

AWS Amplify技术问题:用户注册后如何获取用户ID(Sub ID)

在AWS Amplify注册流程中获取用户ID的方法

Amplify Auth的signUp方法返回结果里其实已经包含了用户的唯一ID,只是它在user.attributes下以sub字段存在,而非直接命名为userId。你可以通过以下方式获取:

直接从注册响应中提取用户ID

调用Auth.signUp后,返回的user对象的attributes.sub就是用户的唯一标识符(和登录后拿到的userId是同一个值)。哪怕你的注册流程需要邮箱/短信验证,用户还未完成激活,这个sub已经被Cognito分配并可正常使用。

示例代码:

import { Auth } from 'aws-amplify';

async function registerUser() {
  try {
    const signUpResponse = await Auth.signUp({
      username: 'user-email-or-phone',
      password: 'secure-password',
      attributes: {
        email: 'user@example.com',
        // 可选:添加其他用户属性
      }
    });

    // 提取用户ID(sub)
    const userId = signUpResponse.user.attributes.sub;
    console.log('注册成功,用户ID:', userId);

    // 在这里使用userId更新你的模型,无需等待用户登录
    // updateYourModel(userId, { /* 模型数据 */ });
  } catch (error) {
    console.error('注册失败:', error.message);
  }
}

验证完成后再次确认(可选)

如果你的流程要求用户完成邮箱/短信验证,在调用Auth.confirmSignUp后,也可以通过Auth.currentUserInfo()获取用户信息(此时用户未登录但已完成确认),再次拿到sub:

async function confirmRegistration(username, code) {
  try {
    await Auth.confirmSignUp(username, code);
    const userInfo = await Auth.currentUserInfo();
    const userId = userInfo.attributes.sub;
    // 后续业务操作
  } catch (error) {
    console.error('验证失败:', error.message);
  }
}

说明:sub是Cognito用户池为每个用户分配的永久唯一ID,和登录后通过Auth.currentAuthenticatedUser()获取到的用户ID完全一致,可直接用于登录前关联或更新你的业务模型。

内容的提问来源于stack exchange,提问作者Sulove Dahal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 07:12:12