依靠Meteor.userId()来保护Meteor的安全性?

时间:2017-12-01 05:27:33

标签: reactjs meteor

我在服务器上有一个更新用户电子邮件地址的方法。我知道这只会在用户只有1个电子邮件地址时才能使用,但现在可以了。

Meteor.methods({
  'user.updateEmail'({ email, userId }) {
    Meteor.users.update(
      { _id: userId },
      {
        $set: {
          'emails.0.address': email,
          'emails.0.verified': false,
        },
      },
    );
  },
});

我从React组件中的表单调用此方法:

const formSubmit = e => {
    e.preventDefault();
    const email = e.target.email.value;
    const userId = Meteor.userId();
    Meteor.call('user.updateEmail', { email, userId }, err => {
      if (err) {
        alert(err);
      }
    });
  };
这是不安全的吗?我从客户端传递userId所以可能会改变它?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

你是对的。您应该在方法中使用Meteor.userId()来接收用户的ID。用户无法更改此内容。