ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

如何使用Amplify with Javascript返回AWS用户池中的用户状态?

2019-11-09 01:47:41  阅读:299  来源: 互联网

标签:aws-amplify reactjs amazon-web-services javascript


我的用户池中有一些用户:
enter image description here

如何使用Amplify返回该特定用户的状态?我有用户的this.state.email.

这是我的handleSubmit函数的样子:

  handleSubmit = async event => {
    event.preventDefault();

    this.setState({ isLoading: true });

    try {
      const newUser = await Auth.signUp({
        username: this.state.email,
        password: this.state.password,
      });

      this.setState({ newUser });
    } catch (e) {
      if (e.name === 'UserNotConfirmedException') {
        alert(
          'Looks like your account isn\'t confirmed! ' +
          'Please check your email to find the confirmation code.',
        );

        // await Auth.resendSignUp(this.state.email);

        this.setState({
          newUser: {
            username: this.state.email,
            password: this.state.password,
          },
        });
      } else if (e.name === 'UsernameExistsException') {
        // how to check if unconfirmed?
        if ('not sure what to put here') {
          alert(
            'Looks like your account isn\'t confirmed! ' +
            'Please check your email to find the confirmation code.',
          );
          // bring up confirmation page
        } else {
          alert(
            'Looks like you already have an account! ' +
            'Please log in with your current password.',
          );
          this.props.history.push('/login');
        }
      } else {
        alert(e.message);
      }
    }

    this.setState({ isLoading: false });
  }

有任何想法吗?

解决方法:

我不是您真正想要的是什么,但是如果您想找到一种方法来检索有关用户状态的信息以管理特定的工作流程,则必须检查ChallengeName和ChallengeParam.例如,当您登录一个新用户auth.signIn时,返回一个cognito用户:如果未确认该用户,则该用户将具有一个ChallengeName和ChallengeParm属性,您可以在代码中进行验证,例如:我从在控制台上输入了临时密码,因此他处于需要输入新密码的状态,根据我执行的代码,它可以完成新密码的工作流程

  return fromPromise(Auth.signIn(username, password)).pipe(
   tap(user => {
     console.log('signIn Methode', user)
      if (user.challengeName === 'NEW_PASSWORD_REQUIRED') {
             this.navigate(['/completePassword']);
      }
  }), catchError(..){ }

在下面,您可以看到我从console.log显示的答案
user with “NEW PASSWORD REQUIRED STATUS”

如果确认用户,您将不会看到challengeName / challangeParm.

希望这会帮助你.

标签:aws-amplify,reactjs,amazon-web-services,javascript
来源: https://codeday.me/bug/20191109/2010945.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有