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



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

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

这就是我所做的:

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

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

不幸的是,这是我迄今为止能想到的唯一解决方案。我听说过 Meteor 的allowdeny,但它们似乎只影响用户在集合上插入更新或删除的时间(不阻止用户订阅集合)。

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

摘自《流星与安全:直接记录》(Meteor & Security: Set the Record Straight by Sacha Greif):

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

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

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

这将导致匿名时手动尝试订阅为空。

最新更新