要解决“AWSCognito/DynamoDB存在问题(不支持未经身份验证的访问)”,您可以使用AWS Cognito提供的身份验证解决方案来解决此问题。下面是一个包含代码示例的解决方法:
首先,您需要设置AWS Cognito用户池和身份池。用户池将用于用户注册和身份验证,而身份池将与DynamoDB集成以控制对数据库的访问。
在您的应用程序中,使用AWS SDK初始化Cognito身份验证提供程序。例如,在Node.js中可以使用以下代码:
const AWS = require('aws-sdk');
const AmazonCognitoIdentity = require('amazon-cognito-identity-js');
const poolData = {
UserPoolId: 'your_user_pool_id',
ClientId: 'your_client_id'
};
const userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
const cognitoParams = {
IdentityPoolId: 'your_identity_pool_id',
Logins: {}
};
const cognitoProvider = new AWS.CognitoIdentityCredentials(cognitoParams);
AWS.config.credentials = cognitoProvider;
AWS.config.credentials.params.Logins
属性将令牌添加到身份验证提供程序的参数中。例如:// 用户进行身份验证并获得访问令牌
const authenticationToken = 'your_authentication_token';
// 添加令牌到Cognito身份验证提供程序的参数中
AWS.config.credentials.params.Logins['cognito-idp.us-east-1.amazonaws.com/your_user_pool_id'] = authenticationToken;
const DynamoDB = new AWS.DynamoDB();
const params = {
TableName: 'your_table_name',
Key: {
'id': { S: 'your_item_id' }
}
};
DynamoDB.getItem(params, (err, data) => {
if (err) {
console.log('Error', err);
} else {
console.log('Success', data);
}
});
通过这种方式,您可以使用AWS Cognito提供的身份验证解决方案来解决“AWSCognito/DynamoDB存在问题(不支持未经身份验证的访问)”。