我一直在寻找AWS开发工具包,以使Cognito(用户身份验证)与DynamoDb(数据库)一起使用以实现细粒度的访问控制(用户池访问某些表/属性)。我似乎无法让他们的SDK正常工作。
这是我从中获得代码的地方: https://aws.amazon.com/blogs/mobile/building-fine-grained-authorization-using-amazon-cognito-user-pools-groups/
var data = {
UserPoolId: <YOUR_USER_POOL_ID>,
ClientId: <YOUR_USER_POOL_CLIENT_ID>,
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(data);
var cognitoUser = userPool.getCurrentUser();
try {
if (cognitoUser != null) {
cognitoUser.getSession(function(err, session) {
if (err) {
console.log(err);
return;
}
console.log('session validity: ' + session.isValid());
console.log('session token: ' + session.getIdToken().getJwtToken());
AWS.config.region = '<YOUR_REGION>';
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId : '<YOUR_IDENTITY_POOL_ID>',
Logins : {
// Change the key below according to the specific region your user pool is in.
`cognito-idp.${AWS.config.region}.amazonaws.com/${data.UserPoolId}` : session.getIdToken().getJwtToken()
}
});
AWS.config.credentials.get(function(err) {
if (!err) {
var id = AWS.config.credentials.identityId;
console.log('Cognito Identity ID '+ id);
// Instantiate aws sdk service objects now that the credentials have been updated
var docClient = new AWS.DynamoDB.DocumentClient({ region: AWS.config.region });
var params = {
TableName: '<YOUR_DYNAMODB_TABLE>',
Item:{userid:id, status:<STATUS_CODE>}
};
docClient.put(params, function(err, data) {
if (err)
console.error(err);
else
console.log(data);
});
}
});
});
} else {
console.log(err);
return;
}
} catch (e) {
console.log(e);
return;
}
很明显,我缺少一个javascript文件。但是我找不到那个脚本在哪里。预先感谢您有任何想法。
答案 0 :(得分:0)
也许this问题中的第一个答案会有所帮助。
这是代码的仓库:https://github.com/PouncingPoodle/aws-cognito-angularjs/tree/master
在index.html文件中,您将看到所有必需的脚本以及它们应位于的顺序。
希望这会有所帮助。