我試圖在認證用戶確認其註冊後在ddb中創建用戶記錄。我希望使用用戶的(聯合)身份標識作爲主鍵。AWS Cognito - 如何在用戶確認註冊後在dynamodb中創建用戶記錄
但是,身份ID在postConfirmation lambda觸發器中不可用。實際上,只有用戶使用其訪問令牌進行身份驗證後,身份標識才可用。我猜這是有道理的,因爲認知用戶池是一個提供者,如Facebook和谷歌。在他們使用該提供者登錄之前,您不會創建身份。
與facebook和google不同的是,在登錄到cognito用戶池時,沒有oauth回調會創建記錄。用戶只需在簽署像這樣:
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (result) {
console.log('access token + ' + result.getAccessToken().getJwtToken());
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: self.IdentityPoolId,
Logins: {
[`cognito-idp.${self.region}.amazonaws.com/${self.poolData.UserPoolId}`]: result.getIdToken().getJwtToken()
}
});
console.log("AuthService: set the AWS credentials - " + JSON.stringify(AWS.config.credentials));
self.currentUser = cognitoUser;
cb(null, result);
},
onFailure: function(err) {
console.log(err);
cb(err, null);
}
});
然後才創建的身份標識。那麼實現創建用戶記錄的標準方法是什麼?用戶首次登錄時創建記錄是否標準?
我的用例是使用一個api網關端點,例如/ users /:id/projects來獲取用戶的所有項目。使用子值或身份ID會更容易嗎?我在想身份證。 – user1411469
用戶池與API GW緊密集成。如果你正在映射API GW後面的所有東西,你可以使用sub來代替。如果您想直接從客戶端訪問Dynamo等內容,則使用身份標識代替會更好。無論如何,我認爲這項工作非常相似。 –
通過全球唯一的,你的意思是所有的用戶池中subs都是唯一的嗎? – user1411469