流星:如果我有使用userId的方法,是否需要检查他们是否已登录?

时间:2018-08-03 22:23:27

标签: javascript meteor meteor-methods

我正在使用流星帐户包。

比方说,我有使用此this.userId做某事的Meteor方法。但是可以从任何客户端调用这些方法吗?这意味着恶意客户端可以在不登录的情况下调用这些方法?为了安全起见,我应该首先手动检查客户端是否为登录用户吗?

export const myMethod = new ValidatedMethod({
 name: 'myMethod',
 validate: new SimpleSchema({
  parameter: { type: String},
 }).validator(),
 run({ parameter }) {

  //manually check if the user is logged in?
  if(!this.userId) {
   throw (new Meteor.Error("You have to be logged in"));
  }

  //do something here
 }
});

1 个答案:

答案 0 :(得分:0)

是的,如果要防止未经授权的用户调用此方法,应进行检查。

但是由于您使用的是ValidatedMethod,因此可以使用meteor/tunifight:loggedin-mixin

您可以这样做:

// Method definition
const method = new ValidatedMethod({
  name, // DDP method name
  mixins : [LoggedInMixin],
  checkLoggedInError: {
    error: 'notLogged',
    message: 'You need to be logged in to call this method',//Optional
    reason: 'You need to login' //Optional
  },
  validate, // argument validation
  run // Method body
});

如果用户未登录,这种方法主体将不会被实际调用