在AWS SDK中,aws.config.credentials确实只能同时处理一个用户凭证。当使用globalSignout方法时,它将注销当前用户的凭证,这会导致所有用户的凭证都被注销。
如果你想在同一应用程序中同时处理多个用户的凭证,你可以使用AWS.CognitoIdentityCredentials类来管理用户凭证。AWS.CognitoIdentityCredentials类允许您为每个用户创建独立的凭证对象,并在需要时切换。
以下是一个示例代码,展示了如何使用AWS.CognitoIdentityCredentials类来处理多个用户的凭证:
// 引入 AWS SDK 和 AWS.CognitoIdentityCredentials 类
const AWS = require('aws-sdk');
const CognitoIdentityCredentials = AWS.CognitoIdentityCredentials;
// 创建用户1的凭证
const credentials1 = new CognitoIdentityCredentials({
IdentityPoolId: 'your-identity-pool-id',
Logins: {
'cognito-idp..amazonaws.com/': 'user1-refresh-token'
}
});
// 创建用户2的凭证
const credentials2 = new CognitoIdentityCredentials({
IdentityPoolId: 'your-identity-pool-id',
Logins: {
'cognito-idp..amazonaws.com/': 'user2-refresh-token'
}
});
// 切换到用户1的凭证
AWS.config.credentials = credentials1;
// 执行需要用户1凭证的操作
// ...
// 切换到用户2的凭证
AWS.config.credentials = credentials2;
// 执行需要用户2凭证的操作
// ...
// 注销用户1的凭证
credentials1.clearCachedId();
credentials1.clearCredentials();
// 注销用户2的凭证
credentials2.clearCachedId();
credentials2.clearCredentials();
在上面的示例代码中,我们首先创建了两个独立的CognitoIdentityCredentials对象,分别代表用户1和用户2的凭证。然后,我们可以通过设置AWS.config.credentials来切换当前使用的凭证。最后,我们可以使用clearCachedId()和clearCredentials()方法来注销每个用户的凭证。
请注意,上述示例中的IdentityPoolId和Logins参数需要替换为您自己的身份池ID和登录提供程序的值。此外,您还需要确保在AWS SDK中正确配置了正确的区域(region)和用户池ID(user-pool-id)。
通过上述方法,您可以在同一应用程序中同时处理多个用户的凭证,并在需要时切换。