来自客户端的Meteor.userId - 更改显示用户电子邮件,正确的行为?

时间:2013-04-20 03:00:29

标签: javascript security meteor

我正在查看另一个问题的答案,关于从客户端更改userId并继续但未获得预期结果;

Meteor.userId is changeable

我已经按照步骤1到5完成了没有问题但是然后将userId()设置为我刚刚在单独的浏览器中使用Meteor.default_connection.setUserId('usersfjhjdskfh');

注销的用户

由于服务器不应该返回数据,而不是显示spinny代替电子邮件地址,它显示了我在那里使用的实际用户的电子邮件地址。 (但它没有带回党的信息并在地图上显示)。

这是预期的行为吗?我错过了12月份给出的最后一个答案,或者有些变化? (我正在运行Meteor 0.6.2,并且从我的示例中删除了不安全和自动发布)

1 个答案:

答案 0 :(得分:1)

我假设您要更改用户的_id而不是通过ID更改登录用户。要更改用户ID,您可以执行类似

的操作
Meteor.users.update(Meteor.userId(), {$set:{_id:<new Id>}});

假设您拥有Meteor.users.allow的正确权限。这应该更改当前登录用户的_id

上一个问题证明了更改本地客户端Meteor功能时的安全性以及它将如何影响服务器。 Meteor服务器不信任来自客户端的任何内容,并在更改它之前使用allow / deny规则进行双重检查,无论该数据可能是当前登录用户的数据。因此,用户确实需要登录才能在服务器上的mongodb数据库中更改有关它们的任何数据,以便允许/拒绝规则。