[英]Unique username and unique email on sign up amplify Cognito React
[英]Cognito authentication with username or unique email via AWS Amplify
使用 Cognito 用户池放大 CLI 身份验证目前有两种主要模式,使用用户名或使用 email 登录。在前一种情况下,email 的唯一性作为必需的用户属性没有被强制执行。
Cognito 服务本身支持“还允许使用经过验证的 email 地址登录”选项(AWS 控制台,用户池属性部分),但它只能在创建用户池时设置(即以后无法修改 - 复选框被禁用)。 是否可以在允许用户使用用户名或 email 进行身份验证的同时强制用户池中没有重复的电子邮件?
总而言之,我的用例需要:
Auth.SignUp
注册用户时,在 Cognito 级别验证/强制执行 email 属性唯一性;Auth.SignIn
使用 email 或作为用户名参数提供的用户名)。当您使用amplify add auth
添加用户池时,选择“用户名”作为您希望用户在出现提示时登录的方法。
如果系统未提示您选择此选项,您可能需要再次尝试amplify add auth
,但这次在开始时出现提示时选择手动配置。
通过amplify add auth
完成整个身份验证设置后,在第一次运行amplify push
之前,运行amplify override auth
。
这将创建一个新的override.ts
文件,您可以使用 AWS CDK 代码编辑该文件,以自定义超出 CLI 允许的能力的 Cognito 资源。
您可以在以下位置找到override.ts
文件:
amplify\backend\auth\<your_app_name>\override.ts
在覆盖文件中,将以下行添加到为您创建的空 function 中:
resources.userPool.aliasAttributes = ['email'];
现在您可以保存文件,并运行amplify push
,希望您的新用户池将在 AWS 控制台中显示您已成功配置它以允许用户名和 email 一起登录。
您必须确保在amplify push
之前编写覆盖代码,否则您的用户池将在云中创建,并且在创建用户池后尝试覆盖此登录功能会引发错误,因为它是只读的。
如果你发现自己在那个 position 中,你将需要创建一个新的用户池,你不能修改现有的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.