我想使用代码更改用户状态。
我尝试了很多代码,但没有任何对我有用。任何人都可以提供完整的工作示例。有一段时间我收到此错误CognitoIdentityCredentials无权执行:cognito-idp:资源上的AdminDisableUser
rcview1.setAdapter(cmpadapter1);
rcview1.setLayoutManager(new LinearLayoutManager(this));
答案 0 :(得分:0)
参数和调用似乎没问题。该错误表示您的lambda函数(我假设此代码段来自您的lambda函数)的角色没有执行 adminDisableUser 的权限。
您需要找到lambda函数的IAM角色,并附加允许该操作的策略。例如:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAdminDisableUser",
"Effect": "Allow",
"Action": "cognito-idp:AdminDisableUser",
"Resource": "*"
}
]
}
您可能还希望指定某些资源,以禁止对每个用户池执行此操作。
答案 1 :(得分:0)
如果您的目标是启用/禁用以管理员身份登录的Cognito用户,请忽略此操作。 请注意,管理员启用/禁用启用/禁用了用户作为管理员。 不禁用用户帐户(登录等),这可能是您收到错误的地方。
答案 2 :(得分:0)
我有这个功能可以在一个应用程序中启用/禁用用户,这里是我如何实现这个功能
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"cognito-idp:AdminEnableUser",
"cognito-idp:AdminDisableUser"
],
"Resource": [
"arn:aws:cognito-idp:<region>:<account-id>:userpool/<user-pool-id>",
"arn:aws:cognito-idp:<region>:<account-id>:userpool/<user-pool-id>"
]
}
]
}
AWS.config.update({
region: "us-east-1",
});
const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({
apiVersion: "2016-04-18",
});
const UserPoolId = "<pool-id>";
const accountActions = (action, username) => {
return new Promise((res, rej) => {
const params = {
UserPoolId /* required */,
Username: username /* required */,
};
if (action == "disable") {
cognitoidentityserviceprovider.adminDisableUser(params, function(err,data) {
if (err) {
rej(err);
} else {
res(data);
}
});
} else {
cognitoidentityserviceprovider.adminEnableUser(params,function(err,data) {
if (err) {
rej(err);
} else {
res(data);
}
});
}
});
};