私はいくつかのMeteor methodsを持っており、特定のユーザだけがクライアントから呼び出せるようにそれらを保護したいと思います。ただし、これらのメソッドはサーバーでも使用されます。私はthis.useridにuseridが渡されているので、ユーザーがログインしているかどうか、そして電話をかけることができるかどうかは問題ではありません。しかし、私はまた、サーバー側からメソッドを呼び出す必要があるときに、メソッドを実行できるようにするために、それがサーバー呼び出しであることをどのように判断するのですか。このサーバー・コールが認証されていないユーザーにもメソッドを呼び出すことを許可するかどうかを判断するthis.useridがないことを確認します。私はそれが許可することができ、未認証のユーザーがメソッドを呼び出すのを防ぐことができるように、メソッドがサーバーによって呼び出されたかどうかを判断する方法を探しています。 Meteor.callがあまりにも今、サーバ側から呼び出すことができるようにMeteorメソッドがサーバによって呼び出されたかどうかを確認することは可能ですか
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;
}
おそらく、makeCoffeeは実際にはサーバー上の関数です。クライアントアクセスは、userIdをチェックするメソッドでラップすることで制御できます。サーバーコールは常に関数に直接渡されます。 – user728291
真実、これはおそらく私が使用することになる解決策です。しかし、私は流星法のいくつかの利点をあきらめています。これは、this.unblock()を使ってさまざまな繊維で複数のメソッドを実行するようなものです。 – Dsyko