javascript - 如何拒绝获取操作的访问

标签 javascript meteor

我正在尝试在 Meteor 中创建文档级别的访问控制系统,但我似乎缺少如何阻止用户获取文档。

我已阅读有关 collection.allowcollection.deny 的文档。通过这些对象,我们可以控制“谁”可以更新删除插入。问题是 Meteor 似乎没有为 fetch 操作提供类似的功能。 拒绝未经授权的用户阅读文档的正确方法是什么?

额外要求:这需要在服务器端进行,以便我们不会通过网络向未经授权的用户泄露文档。

最佳答案

一旦收集数据到达客户端,就无法拒绝读取该数据。理论上,没有办法在客户端上实际执行任何,因为用户可以修改代码。但是,您可以强制发布哪些文档。

发布函数可以处理任意复杂的授权规则。下面是一个简单的示例,我们希望仅将 Messages 集合中的文档发布给属于给定组成员的用户:

Meteor.publish('messagesForGroup', function(groupId) {
  check(groupId, String);

  var group = Groups.findOne(groupId);

  // make sure we have a valid group
  if (!group)
    throw new Meteor.Error(404, 'Group not found');

  // make sure the user is a member
  if (!_.contains(group.members, this.userId))
    throw new Meteor.Error(403, 'You are not a member of the group');

  return Messages.find({groupId: groupId});
});

关于javascript - 如何拒绝获取操作的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32446266/

相关文章:

javascript - 重新定义 RequireJS 模块——这可能吗?

meteor - 找不到名称 'console'

meteor - Iron 路由器 : how to set session using this. params._id

meteor - 如何创建在线/活跃用户列表?

javascript - 数组如何工作(Javascript)?

javascript - 我如何知道鼠标指针是否位于页面上的特定元素上?

javascript - 简单模式正则表达式验证不返回错误消息

javascript - 伪造或强制本地 https : in window. location.protocol

javascript - 在 "Pro Javascript for Web Dev"书中找不到 server.js

javascript - Titanium:显示自定义对象 - 变量未定义