如何确保Sails.js中的蓝图访问

所以我对Sails.js来说很新,但是它似乎像这些蓝色的印刷品一样,

现在我有2个模型, Accounts / Friends

它是使用关联作为Accounts有很多Friends

在我的客户端,我有一种方法可以向用户发送通知,其中一个是朋友请求,因此可以正常工作,并允许用户select接受或拒绝邀请

代码如下:

 socket.on('accounts', function(data) { if (data.verb === "addedTo" && data.attribute === "notifications") { socket.get('/notifications/' + data.addedId, function(note) { console.log(note); if (!$.isEmptyObject(note)) { $scope.notifications.push({ 'text': note.from_name + ' sent you a friends request', 'id': note.id, 'type': note.type, 'from_id': note.from_id }) $.notify('You have a new notification', 'info'); $scope.$digest(); } }) } }) $scope.accept = function(notificationId, fromId) { } 

当人们按下“接受”button时,我想为接受通知的人和发送人的朋友添加一个朋友,这样他们就可以相互交stream了,他们彼此都是朋友。

我可以简单地通过做一个数据对象,并为他们的朋友做socket.post ,然后做一个socket.put来更新通知为阅读和处理它

唯一的问题是,我不希望人们进来打开JS控制台和垃圾邮件socket.post一百万的朋友恶意地

 var obj { 'friend_name': 'Bill', 'online': 1 } socket.post('/accounts/1/friends', obj); 

那么,我怎样才能保证这一点,以便访问/accounts/1/friends是只有人应该访问这个?

如果我没有意义,就问。 谢谢!

被垃圾邮件举例:

有人打开JS控制台,并去

var obj = { friend_name: 'bill', owner: 1 }; io.socket.post('/friends', obj);

现在500次, id 1的账户有500个名为账单的朋友

纠正我,如果我误解了一些东西,但我认为你的逻辑是错误的。

我认为比尔也是一个账户,但是当你只添加他的名字时,你和他的账户信息没有任何联系,也只能通过一个名字来识别他。 为了进行某种validation,您将需要Bill的唯一标识符。 可以添加account_idowner来代替名称。

所以如果有3个账户:

  1. 克里斯
  2. 法案

您将添加var obj = { account_id: 2, owner: 1 };

这样,您可以检查与政策,如果有account_id和所有者的朋友已经存在,然后再添加一个新的朋友。 如果您对如何使用政策有任何疑问,请询问。

无论如何,我认为一个更好的方法将是只有一个模型,并与该模型单独的多对多的关系。 帐户将通过Sails将创build的第三张表(它将成为你的朋友表)与自己有多对多的关系。 这样在新表中,您将有两列将包含帐户ID。 如果假设第一行有ids 1和2,这意味着Chris和Bill都是朋友,您可以考虑一些逻辑来确保行始终是唯一的,这样您就不会遇到垃圾邮件问题。 只是为了logging,我没有做一个模型多到多的关系,所以你必须弄清楚它是如何完成的。