当前位置: 首页 > 知识库问答 >
问题:

AWS cognito忘记了密码流

满元凯
2023-03-14

我已经创建了一个AWS cognito用户池,将电子邮件作为必需属性,并检查了电子邮件以进行验证。用户是使用AWSCognitoClient sdk和调用adminCreateUser(createUser)方法从我的java spring后端服务创建的。用户收到一封带有临时密码的电子邮件,第一次登录时将设置新密码。现在,当我执行忘记密码流时,我得到以下错误:,

 InvalidParameterException: Cannot reset password for the user as there is no registered/verified email or phone_number

虽然我已经收到了我注册的邮箱id的临时密码,并且第一次更改了密码,但我还是收到了上述错误。有人能解释一下我错过了什么吗?

下面是为忘记密码流正在执行的javascript代码,

forgotPassword(username: String, poolInfo:any){

       var poolData = {
            UserPoolId : poolInfo.poolId, // Your user pool id here
            ClientId : poolInfo.portalClientId // Your client id here
        };

        var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);

        var userData = {
            Username : username,
            Pool : userPool
        };

        var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);

        cognitoUser.forgotPassword({
            onSuccess: function (result) {

            this.router.navigate(['login']);

            },
            onFailure: function(err) {
                alert(err);
            },
            //Optional automatic callback
            inputVerificationCode: function(data) {
                var verificationCode = prompt('Please input verification code ' ,'');
                var newPassword = prompt('Enter new password ' ,'');
                cognitoUser.confirmPassword(verificationCode, newPassword, this);
            }
        });
    }

共有2个答案

戚锦
2023-03-14

我用python解决了这个问题:

response = cognito_client.get_user_attribute_verification_code(AccessToken='eyJraWQiOiJtTEM4Vm......',AttributeName='email')

response = cognito_client.verify_user_attribute( AccessToken='eyJraWQiOiJtTEM......', AttributeName='email', Code='230433')

def forgot_password(usename):
    ClientId = 'f2va............'

    response = cognito_client.forgot_password( ClientId=ClientId, Username=username)
def confirm_forgot_password():
    ClientId = 'f2va............'
    response = cognito_client.confirm_forgot_password(ClientId=ClientId,Username=username,ConfirmationCode='644603',Password='12345678')

这是官方文件。https://boto3.amazonaws.com/v1/documentation/api/1.9.42/reference/services/cognito-idp.html#CognitoIdentityProvider.Client.confirm_forgot_password

金高飞
2023-03-14

断然的。我必须添加“email_verified”:“True”作为我从后端服务创建的用户的属性。

 类似资料:
  • 忘记密码时 若要使用此机能,可能需先更新系统软件。 忘记密码时,请遵循以下方法重新设定密码。 1. 进入主选单的(PlayStation®Netrowk)后,选择(账户管理)或(PlayStation®Store)。 2. 显示需输入登入ID(电子邮件地址)与密码的画面时,选择[忘记密码时]。 3. 输入登入ID(电子邮件地址)及出生日期。 4. 选择变更密码的方法。 回答[密码提示问题]来变更密

  • 后台密码忘记了怎么办? 1.如果你已经在后台配置了,邮件发送功能且邮箱是你的真实邮箱,可以到前台登录页找回密码; 2.如果你是后台管理员,你可以使用 sp_password()方法生成一下新的密码; 你只要在任何一个前台可以访问控制器里,如application/Portal/Controller/IndexController.class.php <?php namespace Portal\C

  • 这个问题的处理有点儿麻烦。需要你将系统的备份文件给E立方客服人员,由他们将admin的密码设成初始值,你再导入到系统中,重新设置admin的密码,就可以了。

  • 本文向大家介绍magento 忘记密码网址,包括了magento 忘记密码网址的使用技巧和注意事项,需要的朋友参考一下 示例 $this->helper('customer/data')->getForgotPasswordUrl(); 要么 Mage::helper('customer/data')->getForgotPasswordUrl();

  • 本文向大家介绍mysql密码忘记怎么办,包括了mysql密码忘记怎么办的使用技巧和注意事项,需要的朋友参考一下 遇到两次mysql密码忘记了?最开始干了最傻的事,卸载了重装。 现在有一个不用卸载也能把密码设置回来的办法。知识来源于网络,我这里稍加整理,遇到同样的朋友,可以试试。 以一下实现都是windows系统上完成。 第一步 在任务管理器中找到mysqld.exe,结束掉该进程。 第二步 找到m

  • 我完全无法访问postgres中的任何内容,因为它要求为默认的用户以及我的mac用户名提供密码。我也没有密码,在的情况下,我甚至不明白为什么会有密码,因为事实上它不应该有密码。 在浏览了关于该主题的许多其他答案后: 如果我运行: 如果我使用运行它: 如果我使用user运行它: 此外,在my中,所有方法都设置为信任,还尝试更改为和。 根据@jjanes的建议,我搜索了其他文件,这是我发现的: 最后一