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

Angular中使用Amplify创建Cognito用户如何设置账户状态为FORCE_CHANGE_PASSWORD

Angular+Amplify实现Cognito用户创建状态为FORCE_CHANGE_PASSWORD的解决方案

状态差异原因

  • Auth.signUp 是面向普通用户的自助注册接口,默认触发用户自确认流程,因此创建后的用户状态为 UNCONFIRMED,需要用户自行验证邮箱/手机号完成确认
  • Cognito控制台创建用户调用的是管理员侧的 AdminCreateUser API,走管理员创建用户的流程,因此默认状态为 FORCE_CHANGE_PASSWORD,要求用户首次登录时修改临时密码

实现方案

方案1(推荐):后端封装管理员创建接口

由于管理员创建用户的操作属于高权限操作,不建议直接在前端暴露权限,因此优先通过后端服务封装逻辑:

  1. 后端集成AWS SDK,调用 AdminCreateUser 接口,示例代码(Node.js为例):
import { CognitoIdentityProviderClient, AdminCreateUserCommand } from "@aws-sdk/client-cognito-identity-provider";

const client = new CognitoIdentityProviderClient({ region: "你的Cognito区域" });

const params = {
  UserPoolId: "你的用户池ID",
  Username: username,
  TemporaryPassword: password,
  UserAttributes: [
    { Name: "name", Value: name },
    { Name: "email", Value: email },
    { Name: "phone_number", Value: phone_number }
  ],
  MessageAction: "SUPPRESS" // 可选,设置为SUPPRESS则不发送默认通知邮件,可自行发送自定义通知
};

const command = new AdminCreateUserCommand(params);
const response = await client.send(command);
  1. 后端接口做好权限校验,仅允许拥有管理员权限的前端用户调用
  2. Angular端请求你自己的后端接口完成用户创建即可,得到的用户默认就是 FORCE_CHANGE_PASSWORD 状态

方案2(仅内部系统适用):前端直接调用管理员API

如果是内部管理系统,可给当前登录的管理员用户分配对应IAM权限后,前端直接调用AWS SDK接口:

  1. 先给Cognito管理员角色的IAM策略添加 cognito-idp:AdminCreateUser 权限
  2. Angular项目中安装AWS SDK并调用接口:
import { CognitoIdentityProviderClient, AdminCreateUserCommand } from "@aws-sdk/client-cognito-identity-provider";

// 初始化客户端,Amplify已配置过的话可以直接用Amplify的凭证
const client = new CognitoIdentityProviderClient({
  region: "你的区域",
  credentials: await Auth.currentCredentials()
});

const params = {
  UserPoolId: "你的用户池ID",
  Username: username,
  TemporaryPassword: password,
  UserAttributes: [
    { Name: "name", Value: name },
    { Name: "email", Value: email },
    { Name: "phone_number", Value: phone_number }
  ]
};

const command = new AdminCreateUserCommand(params);
const result = await client.send(command);

注意:该方案会在前端暴露管理员操作权限,对外公开的用户系统禁止使用

注意事项

不要尝试修改Auth.signUp的返回参数来变更用户状态,该状态是Cognito侧根据调用的API类型自动设置的,客户端侧无法直接修改,必须调用对应的管理员API才可以实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:54:01