2

我认为标题几乎说明了一切......全新的部署,所以任何关于如何最好地解决这个问题的指示都值得赞赏。

4

2 回答 2

5

要获取用户创建的集合中的对象(我假设您使用的是 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);
});

您的集合应该有一个属性“创建者”,其中包含创建对象 (*) 的用户的 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-cancelIf%28%29,%20cancelUnless%28%29-764

保护您的集合的良好做法是仅在用户登录时才允许查询:

cancelUnless(me,"You have to be connected to view this item", 401);

用户集合应该得到特别好的保护(仅允许管理员或类似的东西进行 ON_PUT)。

*:要自动将 currentUserId 存储在 creator 属性中,您还可以在仪表板的 ON_POST 事件中添加它:

this.creator = me.id;

更多信息在这里:http ://docs.deployd.com/docs/collections/reference/event-api.md#s-me-764

于 2014-01-02T12:34:19.543 回答
0

从 0.8.9 版开始,事件ONBEFOREREQUEST存在,你可以把这段代码放在那里:

cancelUnless(me);
query.creator = me.id;

这意味着对于发送到该端点的每个请求,都将查询创建者密钥以获取当前登录的用户 ID。如果当前没有登录用户,则取消请求。

于 2017-05-08T15:30:41.700 回答