Ho alcuni Meteor methods e voglio proteggerli in modo che solo alcuni utenti possano chiamarli dal client. Tuttavia, questi metodi vengono anche utilizzati dal server. Sono passato l'userid in this.userid in modo da poter verificare se l'utente è loggato e se sono autorizzati a effettuare la chiamata, nessun problema. Ma quando ho anche bisogno di chiamare il metodo dal lato server come faccio a sapere che si trattava di una chiamata al server in modo da poter consentire al metodo di eseguire. Verifica che non ci sia questo user.userid per determinare se la sua chiamata al server consente agli utenti non autenticati di chiamare anche il metodo. Sto cercando un modo per determinare se il metodo è stato chiamato dal server in modo che possa consentirlo e ancora impedire agli utenti non autenticati di chiamare il metodo.E 'possibile determinare se un metodo Meteor è stato chiamato dal server
Meteor.methods({
makeCoffee: function (time) {
check(time, Number);
if(calledByServer || (Meteor.user() && Meteor.user().profile.usertype === 'coffee dude')){
//Makin' Coffee
}
else
throw new Meteor.Error(404, "Can't find my pants");
return "Coffee will be made at " + time;
}
Forse makeCoffee è in realtà una funzione sul server. L'accesso al client può essere controllato avvolgendolo in un metodo che controlla l'ID utente. Le chiamate al server passano sempre direttamente alla funzione. – user728291
È vero, questa è la soluzione che probabilmente userò. Ma rinuncio ai vantaggi dei metodi meteor, come usare this.unblock() per eseguire più metodi in fibre diverse. – Dsyko