2016-12-08 14 views
0

我正在学习使用AWS lambda,dynamodb,cogito sync创建无服务器的API服务器。直到我对users表格感到困惑,它一直很好。使用AWS认证身份创建用户

所以基本上,我试图让Twitter的克隆API。因此,作为用户,我应该能够创建帖子,关注另一个用户等。

Cognit Identity成功处理了注册和登录,问题是如何访问上的认证数据?用户可以拥有包含其他用户标识的followingfollowers属性。

我目前做了什么,在我使用认知身份注册的应用程序上,然后我将再次调用API网关以在dynamodb上创建user。所以基本上有两个单独的用户数据。我不确定这是否是正确的方法。

我应该在后端而不是在应用上拨打电话cognito吗?我应该为此分开放置users表吗?上ionic

$scope.signup = function() { 
    $ionicLoading.show({ 
    template: 'Registering user...' 
    }); 
    // this is the factory for signing up 
    awsCognitoIdentityFactory.signUp($scope.user.email, $scope.user.name, $scope.user.email, $scope.user.password, 
    function(err, result) { 
     if (err) { 
     errorHandler(err); 
     return false; 
     } 
     // creating user on the api 
     User.create($scope.user).then(function(response) { 
     console.log(response); 
     }); 
     // store locally 
     store.set('user', $scope.user); 

     $ionicLoading.hide(); 
     $scope.$apply(); 

     $scope.user = {}; //clear register form 
     $state.go('confirmation'); 
    }); 
    return true; 
}; 

回答

0

实施例前端代码这听起来像您使用Cognito用户池,在这种情况下可以使用GetUser API。给定用户的上下文,它将返回针对该用户存储的所有属性。

我无法评论存储用户元数据的最佳方式,因为它会根据您的应用的具体情况和需求而有很大差异,但可能需要阅读Cognito的custom attributes系统,该系统可让您存储自定义数据针对用户。这些可以从Cognito控制台进行配置/添加。

+0

是的,正确我是用户cognito用户池。你提到的'GetUser API'只有当我获得当前用户权限时才有效?如果我想看看其他人的个人资料呢? 另外我检查了自定义属性只存储'String | Number |日期时间|布尔'如果我想存储一个数组,比如'followers'或'friends',该怎么办? – danggrianto

+0

这是正确的,用户不能在另一个用户上使用它。有一个该API的管理版本,但理想情况下不会在应用程序本身中使用。 这就是我的意思,这取决于你的应用需求。 Cognito不支持一个用户查看其他属性的用例,但可以通过外部数据存储来增强Cognito的功能。 可以用数组中的用户名或'sub'(唯一用户标识符)来完成一组追随者/朋友,并将其序列化为一个字符串。尽管如此,这也可以放在外部数据存储中。 –