AWS Cognito listUsers初始PaginationToken设置及单用户查询
问题解答
关于PaginationToken的初始值问题
初始调用listUsers时,不需要传入PaginationToken参数,直接从params里删掉这个字段即可。这个参数仅在你需要获取下一页结果时使用——当第一次查询返回的结果数量超过你设置的Limit值时,返回数据里会包含一个有效的PaginationToken,下一次调用时传入这个值就能拿到后续数据。初始调用硬传无效值会触发报错。
修复后的listUsers代码:
listUserFromUserpool = async () => { var params = { UserPoolId: process.env.USER_POOL_ID /* required */, AttributesToGet: ["username"], Filter: 'username = "example"', Limit: 5 // 移除PaginationToken参数 }; try { let data = await this.cognitoIdentity.listUsers(params).promise(); return data; } catch (error) { console.log(error); return false; } };
无需分页获取单个用户的方法
检查用户名是否存在的场景,更推荐用adminGetUser方法,它可以直接通过用户名精准查询单个用户,不需要过滤和分页,效率更高。
注意:调用这个方法需要对应的IAM权限(比如cognito-idp:AdminGetUser),且你的服务角色需要被允许访问目标用户池。
示例代码:
checkUserExists = async (username) => { var params = { UserPoolId: process.env.USER_POOL_ID, Username: username // 要检查的目标用户名 }; try { await this.cognitoIdentity.adminGetUser(params).promise(); // 成功返回则说明用户存在 return true; } catch (error) { // 抛出UserNotFoundException则说明用户不存在 if (error.code === 'UserNotFoundException') { return false; } // 处理其他未知错误 console.log(error); return false; } };
内容的提问来源于stack exchange,提问作者Fury
相关产品推荐
相关产品推荐

