Joh*_*Rin 3 authentication amazon-cognito angular aws-amplify
我在角度项目中使用CLI工具链配置了Amplify Authentication模块.
现在,我尝试在Amazon Cognito控制台中更改我的用户池的属性设置,如下面的文档中所述:

不幸的是,我在控制台中看到所有字段都被禁用了.
它是否被禁用,因为我在自动化设置中遗漏了某些内容,或者因为现在无法使用CLI,我需要提供手动设置?
谢谢你的回答,
编辑2019-04-11:
不再需要手动更新配置文件。
在最新版的CLI中,我们现在可以选择通过电子邮件登录:
原始答案
我发现有关此主题的问题已经存在,提到了一种调整用户池属性的方法。
只需修改文件 amplify/backend/auth/<project_name>/<project_name>-cloudformation-template.yml
在行之后:
Type: AWS::Cognito::UserPool
Properties:
UserPoolName: !Ref userPoolName
Run Code Online (Sandbox Code Playgroud)
添加行:
UsernameAttributes:
- 'email'
Run Code Online (Sandbox Code Playgroud)
并推送修改 amplify push
无论您是在AWS控制台中手动创建用户池还是使用Amplify CLI创建用户池,都无法在创建后更改用户池的属性(请参阅此处).
在CLI中似乎没有办法配置用户池,以便检查"电子邮件地址或电话号码"单选按钮而不是"用户名".
因此,如果您想在运行Amplify CLI后使用电子邮件作为"用户名",您有两种选择:
保留所有用户池设置,并调用如下signUp方法:
signup(email, password, email)
Run Code Online (Sandbox Code Playgroud)
第一个arg是用户名,你只需使用它的电子邮件,第二个arg是密码,第三个arg是电子邮件(如果你使用电子邮件验证,它可能已被CLI自动设置为"必需" ).
在AWS控制台中手动创建新用户池,并在创建时将属性单选按钮设置为"电子邮件地址或电话号码".
在您的main.ts文件中,使用新用户池的相应值覆盖userPoolId和userPoolWebClientId配置aws-exports.js:
import Amplify from 'aws-amplify';
import amplify from './aws-exports';
Amplify.configure(amplify);
Amplify.configure({
Auth: {
userPoolId: 'us-east-1_jZIcja1eI',
userPoolWebClientId: '80e40l0hvvrct4avi3buceekf',
}
});
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到值:
使用选项1(使用用户名登录),理论上您可以拥有多个具有不同用户名但具有相同电子邮件地址的用户帐户(没有电子邮件唯一性,只有用户名必须是唯一的).
使用选项2(使用电子邮件地址登录),电子邮件地址必须是唯一的,也就是说,不能有两个具有相同电子邮件地址的帐户.使用此选项,用户名将自动设置为自动生成的"子"标识符.
尝试使用已存在的用户名(选项1)或电子邮件地址(选项2)注册新用户时,会返回以下错误:
用户名(选项1):
电子邮件地址(选项2):
| 归档时间: |
|
| 查看次数: |
1058 次 |
| 最近记录: |