我正在使用Meteor
来创建Web应用程序。
我正在处理的问题是我有一个名为Books
,的集合,我希望它仅供登录用户使用,而不能用于匿名用户。
这就是我的所作所为:
if (Meteor.userId()) Meteor.subscribe('Books');
但这不是最好的解决方案,因为匿名用户仍然可以通过打开浏览器控制台并调用Books
来获取Meteor.subscribe('Books');
收集信息。
不幸的是,到目前为止,这是我能想到的唯一解决方案。我听说过Meteor的allow
和deny
,但它们似乎只影响用户插入,更新或删除< / strong>集合(不阻止用户订阅到集合)。
答案 0 :(得分:2)
您可以从服务器端限制对登录用户的订阅,如下所示:
Meteor & Security: Setting the Record Straight来自Sacha Greif:
仅在用户登录时发布帖子:
Meteor.publish('posts', function() { if(this.userId){ return Posts.find(); } });
在您的情况下,您需要将posts
更改为books
,并正确大写以匹配其他代码。
这将导致手动尝试订阅,而匿名则为空。