AWS Amplify:confirmSignUp 后,自动登录用户的最佳实践是什么?

jef*_*wis 8 authentication amazon-web-services amplifyjs amazon-cognito aws-amplify

概述:

用户收到验证码后,输入验证码,则Account Status变为CONFIRMED。现在注册过程已完成,我想在之后自动登录用户。将用户重定向到登录页面以让用户输入信息并登录似乎效率低下且多余。

可能的选项:

  1. 使用注册过程中的email和,然后分派操作来登录用户。passwordsignIn
  2. confirmSignUp为和找到一种组合方法signIn,这将类似于confirmSignUpAndSignIn(如果存在方法)。我查看了AWS 文档 和 Amplify-js Github Repo 的问题,但只发现其他人也遇到了类似的困境,但没有明显的解决方案。
  3. 使用AWS Amplify Hub(身份验证侦听器),但用户确认注册时不会发出任何事件。confirmSignUp发出事件是有意义的,但事实并非如此。(见下文)

AWS Hub监听器:

我正在使用AWS Amplify Hub(身份验证侦听器),发出的唯一事件是文档中的以下事件:

case 'signIn':
    logger.error('user signed in'); //[ERROR] My-Logger - user signed in
    break;
case 'signUp':
    logger.error('user signed up');
    break;
case 'signOut':
    logger.error('user signed out');
    break;
case 'signIn_failure':
    logger.error('user sign in failed');
    break;
case 'configured':
    logger.error('the Auth module is configured');
Run Code Online (Sandbox Code Playgroud)

Tob*_*obi 2

我遇到了同样的挑战,在查看 Amplify API 文档和源代码后,我发现简单的解决方案是最好的:

try {
  // try to confirm the code
  await Auth.confirmSignUp(formValues.email, formValues.confirmationCode);
  // If successful, sign user in
  await Auth.signIn({
    username: formValues.email,
    password: formValues.password,
  });
} catch (error) {
  console.log('error', error);
}
Run Code Online (Sandbox Code Playgroud)