首页 > 解决方案 > AWS Cognito:如何通过 Node.js 中的访问令牌删除用户?

问题描述

我正在管理一个用 Node.js(restful 后端)和 React(前端)编写的应用程序,并使用 AWS Cognito 进行用户身份验证。

在前端,我有一个表单请求我的后端删除用户。前端可以发送给我的唯一信息是用户名(在我的例子中是电子邮件)和我在成功登录后发送到前端的访问令牌。

现在我想删除一个用户。到现在为止,我用这个deleteUser方法试了一下(见js 文档中的用例 13 )。:

const poolData = {
    UserPoolId: process.env.COGNITO_USER_POOL_ID,
    ClientId: process.env.CLIENT_ID
};
AWS.config.region = process.env.AWS_DEFAULT_REGION;
const userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);

// ...

router.post('/deleteUser', (req, res) => {
   var userData = {
      Username: req.body.email,
      Pool: userPool
   };
   var cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
   if (cognitoUser == null) {
      res.status(400).send('User not found');
      return;
   }
   cognitoUser.deleteUser(function(err, result) {
      if (err) {
         res.status(400).send('Could not delete user');
      } else {
         res.status(200).send('Deleted user');
      }
   });
});

deleteUser这会在带有 的部分的错误块中引发错误Error: User is not authenticated。我需要首先对用户进行身份验证,但我不会从前端获取密码。我只有它可以提供给我的访问令牌。

如何使用提供的令牌对用户进行身份验证?还是我在这里误解了一个概念?如果是这样,我做错了什么?

任何帮助将不胜感激。

标签: node.jsamazon-web-servicesamazon-cognitoamazon-cognito-identity-js

解决方案


推荐阅读