2014-11-17 30 views
2

我使用Meteor來創建Web應用程序。MeteorJS - 如何防止匿名客戶訂閱集合?

我正在處理的問題是我有一個名爲Books,的集合,我希望它只能用於登錄用戶,而不能用於匿名用戶。

這是我做的:

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

但是,這不是最好的解決辦法,因爲匿名用戶仍然可以通過打開瀏覽器控制檯,並呼籲Meteor.subscribe('Books');Books收集信息。

不幸的是,這是迄今爲止我能想到的唯一解決方案。我聽說流星的allowdeny的,但他們似乎隻影響當用戶插入更新,或對集合(不阻止用戶訂閱到集合)中移除。通過Sacha Greif

Meteor & Security: Setting the Record Straight

回答

2

您可以限制訂閱記錄在從服務器端的用戶,如下

唯一發布的帖子,如果用戶登錄:

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

在你的情況下,你需要將posts更改爲books,prope大寫字母大寫以匹配其他代碼。

這將導致手動嘗試訂閱而匿名來空。