我正在使用流星帐户包。
比方说,我有使用此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
}
});
答案 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
});
如果用户未登录,这种方法主体将不会被实际调用