放大和反应:代码不匹配和失败启用软件令牌 MFA
Amplify and React : Code mismatch and fail enable Software Token MFA
我有一个 Cognito 用户池,其 MFA 设置为可选且仅包含 TOTP。
我正在尝试设置一个页面,以便首次为用户启用 MultiFactorAuthentication AWS Documentation。
安装我的组件时,我生成一个二维码并使用 qrcode.react
在屏幕上显示它
useEffect(() => {
Auth.currentAuthenticatedUser({ bypassCache: true }).then(user => {
setUser(user);
Auth.setupTOTP(user).then(code => {
const authCode = "otpauth://totp/AWSCognito:" + user.username + "?secret=" + code + "&issuer=Invent";
setQrCode(authCode);
});
});
}, []);
然后,当用户输入时,我验证它并调用 setPrefferredMFA。现在在这里,我检查了“输入”是否正确传递并且那里没有问题。
const setupMFA = input => {
Auth.setupTOTP(user).then(() => {
Auth.verifyTotpToken(user, input)
.then(() => {
Auth.setPreferredMFA(user, "TOTP").then(() => {
props.setShowModal(false);
});
})
.catch(e => {
// Token is not verified
});
});
};
我仍然收到 代码不匹配并无法启用软件令牌 MFA 错误并且无法为用户设置 MFA。
我解决了
Auth.verifyTotpToken() 不应该在 setupTOTP 的 .then() 块中。
噗。删除 setupMFA 函数中的 Auth.setupTOTP 使其工作。
我有一个 Cognito 用户池,其 MFA 设置为可选且仅包含 TOTP。
我正在尝试设置一个页面,以便首次为用户启用 MultiFactorAuthentication AWS Documentation。
安装我的组件时,我生成一个二维码并使用 qrcode.react
在屏幕上显示它 useEffect(() => {
Auth.currentAuthenticatedUser({ bypassCache: true }).then(user => {
setUser(user);
Auth.setupTOTP(user).then(code => {
const authCode = "otpauth://totp/AWSCognito:" + user.username + "?secret=" + code + "&issuer=Invent";
setQrCode(authCode);
});
});
}, []);
然后,当用户输入时,我验证它并调用 setPrefferredMFA。现在在这里,我检查了“输入”是否正确传递并且那里没有问题。
const setupMFA = input => {
Auth.setupTOTP(user).then(() => {
Auth.verifyTotpToken(user, input)
.then(() => {
Auth.setPreferredMFA(user, "TOTP").then(() => {
props.setShowModal(false);
});
})
.catch(e => {
// Token is not verified
});
});
};
我仍然收到 代码不匹配并无法启用软件令牌 MFA 错误并且无法为用户设置 MFA。
我解决了
Auth.verifyTotpToken() 不应该在 setupTOTP 的 .then() 块中。
噗。删除 setupMFA 函数中的 Auth.setupTOTP 使其工作。