2

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

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

这就是我所做的:

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

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

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

4

1 回答 1

2

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

来自Meteor & Security:Sacha Greif的直接记录:

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

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

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

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

于 2014-11-17T08:07:41.570 回答