MiniMongo в основном хранит данные, которые он получает из определенных сообщений по DDP (протокол данных Метеора). Обычно данные не кэшируются локально и восстанавливаются при каждой перезагрузке страницы, если предположить, что мы говорим о гибридном мобильном приложении, отображаемом в WebView.
Вы можете просмотреть сообщения, переданные с помощью Meteor DevTools для Chrome .
Эти сообщения (added
/ changed
/ removed
) обычно отправляются через систему pub / sub . На самом деле вы несете ответственность за решение , что будет отправлено. Вы имеете полный контроль над ролями и разрешениями моделирования в вашей системе, а также над тем, кто что получает в вашей публикации, поскольку публикация инициируется вызовом функции на сервере.
Общий шаблон для этого:
Meteor.publish('someProtectedPblication', function(/*...*/) {
if (this.userId && someCondition(this.userId) { // check for permission
return SomeCollection.find(someData, someFields); // return a cursor that gets synced with the user
}
return this.ready(); // the user is not authorized to view the data
});
Когда администратор создает пользователя , я предполагаю, что это делается с помощью вызова метода Meteor, то есть RPC . Нет никаких причин для того, чтобы данные этого пользователя (не говоря уже об их хешированном пароле) были доступны администратору на стороне клиента или сохранены в его коллекции кэшированных баз данных, если вы явно не опубликуете их для него (чего я не вижу причина, чтобы когда-либо).
Я не нахожу особого смысла в использовании мутаций MiniMongo на стороне клиента (insert
/ update
/ delete
) на стороне клиента, за исключением оптимистического рендеринга пользовательского интерфейса, так как я рассматриваю защиту с помощью allow/deny
правила менее безопасны и более подвержены ошибкам, и я использую методы Meteor для любой мутации.