我在服务器上有一个更新用户电子邮件地址的方法。我知道这只会在用户只有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所以可能会改变它?
答案 0 :(得分:0)
不要打扰从客户端传递用户ID。您可以使用Meteor.userId()
更多信息:
Meteor.user() - Get the current user record, or null if no user is logged in. A reactive data source Meteor.userId() - Get the current user id, or null if no user is logged in. A reactive data source this.userId - Access inside the publish function. The id of the logged-in user, or null if no user is logged in 和The id of the user that made this method call, or null if no user was logged in。
答案 1 :(得分:0)
你是对的。您应该在方法中使用Meteor.userId()
来接收用户的ID。用户无法更改此内容。