9

いくつかのMeteor メソッドがあり、特定のユーザーのみがクライアントから呼び出せるようにそれらを保護したいと考えています。ただし、これらのメソッドはサーバーでも使用されます。this.userid でユーザー ID が渡されるので、ユーザーがログインしているかどうか、および通話が許可されているかどうかを確認できます。問題ありません。しかし、サーバー側からもメソッドを呼び出す必要がある場合、メソッドの実行を許可できるように、それがサーバー呼び出しであると判断するにはどうすればよいですか。this.userid がないことを確認して、サーバー呼び出しで認証されていないユーザーもメソッドを呼び出すことができるかどうかを判断します。メソッドがサーバーによって呼び出されたかどうかを判断する方法を探しているので、それを許可し、認証されていないユーザーがメソッドを呼び出すのを防ぐことができます。

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;
  }
4

2 に答える 2

14

this.connectionnullメソッドがクライアントから呼び出されなかった場合、サーバー側のメソッド内になります

this.connection docsを参照してください。

于 2014-10-05T19:52:19.333 に答える