Meteor用户帐户只能通过电子邮件注册1个用户

时间:2016-04-17 10:54:17

标签: meteor

我使用 Meteor用户帐户使用多重服务(google,facebook,...)

我不明白为什么当我使用相同的电子邮件地址注册谷歌和Facebook时,mongodb会创建2个不同的帐户。

我使用默认的Meteor用户帐户设置。

(我没有代码向您展示)

2 个答案:

答案 0 :(得分:1)

Meteor不会根据电子邮件地址合并来自不同服务的用户帐户。如果用户的登录凭据尚未存在于数据库中,则会创建新用户。自动合并Facebook,Google和电子邮件/密码凭据是一个潜在的安全漏洞。

但是,我相信可以手动合并它们。登录凭据存储在db.users.services文档中,每个用户应该可以有多个登录方法。我不建议这样做。

答案 1 :(得分:0)

如果您想确保同一封电子邮件未被使用两次,您可以执行以下操作:

Accounts.onCreateUser(function(options, user) {
  var service, serviceName;
  if (!user.profile) {
    user.profile = options.profile || {};
  }

  if(user.services) {
    // Get first service
    serviceName = _.keys(user.services)[0];
    user.meta.service = serviceName;

    if (!user.emails || !user.emails.length) {
      if(serviceName === "facebook" || serviceName === "google") {
        service = user.services[serviceName];
        user.emails = user.emails || [];

        user.emails[0] = {
          address: service.email,
          verified: service.verified_email
        };

      }
    }
  }

  return user;
});

这将在用户“email”字段中添加来自提供商的电子邮件字段,这将阻止用户使用两个不同的帐户注册两次。

相关问题