node.js - 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
。我需要首先对用户进行身份验证,但我不会从前端获取密码。我只有它可以提供给我的访问令牌。
如何使用提供的令牌对用户进行身份验证?还是我在这里误解了一个概念?如果是这样,我做错了什么?
任何帮助将不胜感激。
解决方案
推荐阅读
- python - 为什么会发生此错误“input_2_1:0 is fed and fetched”?
- azure-devops - Azure DevOps:在多项目解决方案中构建 1 个项目
- terraform - 如何在 pr 级别而不是版本上引用模块
- javascript - 如何在JS中不重复显示随机多张图片?
- mysql - Mysql 5.6 中 OVER() 的解决方法
- batch-file - 如何让我的状态(字符串)在我的批处理文件中闪烁?
- docker - 将 teamcity 参数传递给 terraform
- javascript - 在 Laravel 中对 Vue 多选选项进行 Ajax 调用
- python - 如何将视觉刺激的反应时间保存到 csv 文件中
- sql - 如何用循环连接SQL中的连续数字字符串(在一个范围内)?