我在我的角度项目中使用CLI工具链配置了Amplify Authentication模块。
现在,我尝试按照documentation此处所述在Amazon Cognito控制台中更改用户池的“属性”设置:
不幸的是,我在控制台中看到所有禁用的字段。
是因为我错过了自动设置中的某些功能还是因为现在无法使用CLI且需要提供手动设置而将其禁用了吗?
感谢您的回答,
答案 0 :(得分:7)
编辑2019-04-11:
不再需要手动更新配置文件。
在最新版的CLI中,我们现在可以选择通过电子邮件登录:
原始答案
我发现有一个关于该主题的existing issue,其中提到了一种适应用户池属性的方法。
只需修改文件amplify/backend/auth/<project_name>/<project_name>-cloudformation-template.yml
行后:
Type: AWS::Cognito::UserPool
Properties:
UserPoolName: !Ref userPoolName
添加行:
UsernameAttributes:
- 'email'
并使用amplify push
答案 1 :(得分:6)
无论您是在AWS控制台中还是使用Amplify CLI手动创建用户池,都无法在创建后更改用户池的属性。(见here)。
并且在CLI中似乎无法配置用户池,因此无法选中“电子邮件地址或电话号码”单选按钮,而不是“用户名”。
因此,如果要在运行Amplify CLI之后将电子邮件用作“用户名”,则有两个选择:
将所有用户池设置保持不变,并像这样调用signUp
方法:
signup(email, password, email)
第一个参数是用户名,您只需使用电子邮件,第二个参数是密码,第三个参数是电子邮件(如果您将CLI设置为“ required”,使用电子邮件验证)。
在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',
}
});
您可以在此处找到值:
使用选项1(使用用户名登录),理论上,您可以拥有多个用户帐户,这些用户帐户具有不同的用户名,但电子邮件地址相同(没有电子邮件唯一性,只有用户名必须是唯一的)。>
使用选项2(使用电子邮件地址登录),该电子邮件地址必须唯一,即,不能有两个帐户使用相同的电子邮件地址。使用此选项,用户名将自动设置为自动生成的“子”标识符。
尝试使用已经存在的用户名(选项1)或电子邮件地址(选项2)注册新用户时,返回以下错误:
用户名(选项1):
电子邮件地址(选项2):
答案 2 :(得分:0)
创建用户池后,无法更改某些参数(删除属性,更改sms身份验证)。因此,不幸的是,解决方案是仔细创建新的用户池。 Aws有这个问题,也许将来会解决。