Meteor用户帐户电子邮件验证

时间:2015-02-06 23:20:55

标签: meteor

我正在尝试为用户设置电子邮件验证。我正在使用useraccounts:core的{​​{1}},我的服务器上有以下内容

enforceEmailVerification

当我尝试以用户身份注册时,我收到以下服务器错误

Accounts.onCreateUser(function(options, user) {
  var userId = user._id;
  Accounts.sendVerificationEmail(userId);

  if(options.profile.invite){
    Invites.remove({_id: options.profile.invite});
  }

  user.profile = options.profile

  return user;
});

2 个答案:

答案 0 :(得分:2)

我也遇到了这个问题并根据这个问题:https://github.com/alanning/meteor-roles/issues/35#issuecomment-40674250

Accounts.sendVerificationEmail(userId);置于Accounts.onCreateUser内并不是一个好主意,因为用户尚未“存在”。

如果您正在使用某种方法,则可以在创建用户时返回用户ID,然后再发送电子邮件,如下所示:

var userID = Accounts.createUser(options, callback);
Accounts.sendVerificationEmail(userID);

答案 1 :(得分:1)

您需要将sendVerificationEmail放在Accounts.createUser中并设置超时

Accounts.onCreateUser(function(options, user) {

 // we wait for Meteor to create the user before sending an email
 Meteor.setTimeout(function() {
    Accounts.sendVerificationEmail(user._id);
 }, 2 * 1000);

 return user; 
});