MeteorJS - 如何防止匿名客户订阅集合?

时间:2014-11-17 07:58:56

标签: meteor subscribe accessible

我正在使用Meteor来创建Web应用程序。

我正在处理的问题是我有一个名为Books的集合,我希望它仅供登录用户使用,而不能用于匿名用户。

这就是我的所作所为:

if (Meteor.userId()) Meteor.subscribe('Books');

但这不是最好的解决方案,因为匿名用户仍然可以通过打开浏览器控制台并调用Books来获取Meteor.subscribe('Books');收集信息。

不幸的是,到目前为止,这是我能想到的唯一解决方案。我听说过Meteor的allowdeny,但它们似乎只影响用户插入更新删除< / strong>集合(不阻止用户订阅到集合)。

1 个答案:

答案 0 :(得分:2)

您可以从服务器端限制对登录用户的订阅,如下所示:

Meteor & Security: Setting the Record Straight来自Sacha Greif

  

仅在用户登录时发布帖子:

Meteor.publish('posts', function() {   if(this.userId){
    return Posts.find();   } });

在您的情况下,您需要将posts更改为books,并正确大写以匹配其他代码。

这将导致手动尝试订阅,而匿名则为空。