MeteorJS - 如何防止匿名客户端订阅集合?
Posted
技术标签:
【中文标题】MeteorJS - 如何防止匿名客户端订阅集合?【英文标题】:MeteorJS - How to prevent anonymous clients from Subscribing to a collection? 【发布时间】:2014-11-17 07:58:56 【问题描述】:我正在使用Meteor
创建一个网络应用程序。
我正在处理的问题是我有一个名为 Books
的集合,我希望它只对登录用户可用,而对匿名用户不可用。
这就是我的工作:
if (Meteor.userId()) Meteor.subscribe('Books');
但这不是最好的解决方案,因为匿名用户仍然可以通过打开浏览器控制台并调用Meteor.subscribe('Books');
来获取Books
集合信息。
不幸的是,这是迄今为止我能想到的唯一解决方案。我听说过 Meteor 的 allow
和 deny
,但它们似乎只影响用户插入、更新或删除集合(不阻止用户订阅集合)。
【问题讨论】:
【参考方案1】:您可以将订阅限制为从服务器端登录的用户,如下所示:
来自Meteor & Security: Setting the Record StraightSacha Greif:
仅在用户登录时发布帖子:
Meteor.publish('posts', function() if(this.userId) return Posts.find(); );
在您的情况下,您需要将posts
更改为books
,并正确大写以匹配其他代码。
这将导致匿名时手动订阅尝试变为空。
【讨论】:
以上是关于MeteorJS - 如何防止匿名客户端订阅集合?的主要内容,如果未能解决你的问题,请参考以下文章