Po pierwsze, trzeba wykonać dane „unhackable”, przyjrzeć się funkcji rozpatrzenie: http://docs.meteor.com/#meteor_publish
Więc w funkcji Meteor.publish dla danego produktu należy zrobić coś podobnego :
Dzięki temu klient może zobaczyć tylko produkt, jeśli jest zalogowany & mieć zweryfikowane konto. Nadal mogą się logować, ale nie widzą produktów, dopóki ich konto nie zostanie zweryfikowane:.
Server js
Meteor.publish("productinfo", function() {
user = Meteor.users.findOne({_id:this.userId})
if(user) {
if(user.emails[0].verified) {
//You can put some extra logic in here to check which product the user has, if you're selling or something like that
return Products.find({});
}
}
});
Należy pamiętać trzeba usunąć autopublish
który meteor używa, aby uczynić życie trochę łatwiejsze, to w zasadzie publikuje wszystkie zbiory w dół do użytkownika, ale chcesz ograniczyć pewne info, więc powinieneś go usunąć
Po drugie, musisz zająć się danymi w swoim szablonie, aby użytkownik, który nie jest zalogowany, nie był widoczny. Tak więc nawet w tym etapie, gdy przeglądarka jest początkowo ładowania nie będzie zobaczyć produkty
Client JS
Meteor.subscribe("productinfo");
Template.products.products = function() {
if(Meteor.userId()) {
if(Meteor.user().emails[0].verified) {
return Product.findOne({_id:"your product id"});
}
}
}
ten sposób sprawdza szablon pomocnicze, jeśli użytkownik jest zalogowany & one zweryfikowane konto. Ponadto, jeśli kod został zmieniony po stronie klienta, nie zobaczyłby produktu z powodu funkcji publikowania.
Awesome, wielkie dzięki! –