我认为标题几乎说明了一切。。。Deployd是全新的,因此任何关于如何最好地实现这一点的建议都将受到赞赏。
获取用户创建的集合中的对象(我假设您使用的是javascript库dpd.js):
// Get the current user:
var currentUser;
dpd.users.me(function(result, error) {
currentUser = result;
});
// query your collection with your currentUser id as parameter
dpd.yourcollection.get({creator:currentUser.id}, function(result) {
// Do something with the result
console.log(result);
});
您的集合应该具有一个属性"creator",该属性包含创建对象(*)的用户的id。然后,为了保护您的后端,请转到集合的ON_GET选项卡中的仪表板,并使用以下代码进行保护:
cancelUnless(isMe(this.creator), "You have to be the creator to view this item", 401);
有关cancellUnless()和isMe()的更多信息,请点击此处:http://docs.deployd.com/docs/collections/reference/event-api.md#s-取消如果%28%29,%20取消除非%28%29-764
保护您的收藏的好做法是只在用户登录时允许查询:
cancelUnless(me,"You have to be connected to view this item", 401);
用户集合应该特别安全(只允许管理员或类似人员使用ON_PUT)。
*:要将currentUserId自动存储在创建者属性中,您也可以将其添加到面板中的ON_POST事件中:
this.creator = me.id;
更多信息请点击此处:http://docs.deployd.com/docs/collections/reference/event-api.md#s-me-764
从0.8.9版本开始,事件ONBEFOREQUEST存在,您可以将此代码放入其中:
cancelUnless(me);
query.creator = me.id;
这意味着,对于发送到该端点的每个请求,创建者密钥都将被查询为具有当前登录用户的id。如果没有当前登录用户,则该请求将被取消。