0

几周前我发现了流星,真的很兴奋。当我发现 angular-meteor 时,我几乎欣喜若狂。但是,对于所有数据绑定,我不确定身份验证是如何工作的,我需要知道这一点才能在任何生产系统上使用它。我已经阅读了几篇博客文章和 SO 问题,但我仍然不确定它是如何工作的,如果有人能解释这一切,我将不胜感激,这样我就可以确信我正在正确使用系统。

我的主要问题围绕着你看到的这个管理发布的标准函数,直接取自 Angular-Meteor 教程。

Meteor.publish("users",function(){
  return Meteor.users.find({},{fields: {emails: 1, profile: 1}});
});

现在,如果用户userId在客户端的控制台中更改了他的内容怎么办?似乎该更改将同步回服务器,并且服务器会认为他是其他人。我会假设有一种方法this.userId与客户端调用的变量分开,Meteor.userId()因此它不能被更改。但是,我想确认确实存在分离,以及这种分离是如何工作的,这样我才能对使用流星身份验证充满信心。

感谢您的帮助!

4

1 回答 1

2

不,前端的数据更改不会自动得到服务器的允许。确保您已删除该insecure软件包。之后,您需要手动指定允许更改哪些数据,例如:

Parties.allow({
  update: function (userId, party) {
    return (userId == party.owner);
  }
});

只允许一方的所有者更新一方的详细信息。userId在这里,meteor 通过将(当前登录用户的 id)与owner当事方的字段进行比较来检查用户是否确实是所有者。

所有这些都发生在服务器端,因此用户无法对此进行调整。

在您的情况下,除非您以某种方式允许用户通过在集合上显式创建allow规则来编辑其 id Meteor.users- 为什么要这样做?——你关心的问题是不可能的。

文档的数据和安全部分对此有更多详细信息。

于 2015-08-19T01:06:38.273 回答