2014-11-17 6 views
2

Я использую Meteor для создания веб-приложения.MeteorJS - Как предотвратить анонимные клиенты от подписки на коллекцию?

Проблема, с которой я имею дело, заключается в том, что у меня есть коллекция с именем Books, и я хочу, чтобы она была доступна только для зарегистрированных пользователей, а не для анонимных пользователей.

Это то, что я делаю:

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

Но это не самое лучшее решение, потому что анонимные пользователи могут получить информацию о Books коллекции, открыв свою консоль браузера и вызова Meteor.subscribe('Books');.

К сожалению, это единственное решение, о котором я могу думать до сих пор. Я слышал о метеоре allow и deny, но они, кажется, влияют только когда пользователи вставку, обновления или удалить на коллекции (не запрещая пользователей подписавшего к коллекции).

ответ

2

Вы можете ограничить подписки для зарегистрированных пользователей со стороны сервера, следующим образом:

От Meteor & Security: Setting the Record Straight по Sacha Greif:

публиковать сообщения только если пользователь вошел в систему:

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

В вашем случае вам необходимо изменить posts на books, prope rly капитализируется в соответствии с другим кодом.

Это приведет к ручным попыткам подписаться, когда анонимный появится пустым.