Вы видите поле profile
на клиенте, так как вы уже отредактировали и, таким образом, включили это специальное поле объекта User
при создании или обновлении пользователя.Чтобы защитить этот объект от модификаций на стороне клиента, вы можете запретить все записи с клиента со следующим кодом на стороне сервера.
// Deny all client-side updates to user documents
Meteor.users.deny({
update () { return true; },
});
Таким образом, даже если поле profile
доступно наклиент в объекте Meteor.user()
, клиент не может вносить изменения.
Если вы публикуете пользовательские данные, вы можете управлять их экспозицией по-своему.Например, давайте предположим, что мы вводим новое поле customProfile
в объект пользователя, чем в следующем коде, customProfile
не будет виден клиенту.
Meteor.publish("userData", function () {
console.log('publishing userData with id', this.userId);
return Meteor.users.find(
{_id: this.userId},
{fields: {'customProfile': 0}}
);
});
Вы можете найти большеинформация в справочнике .