javascript - Meteor.js - 获取/获取注册 token (来自 Accounts.sendEnrollmentEmail)

标签 javascript meteor

我不知道如何从 Accounts.sendEnrollmentEmail 函数获取注册 token 。

我知道这个函数会直接向用户发送一封邮件,最终看起来像这样:

http://localhost:3000/#/enroll-account/FCXzBbqHInZgBlLaOpu8Iv11jP9DJEG-e1auAHDsh6S

但是,我需要以某种方式只获取 token 部分 FCXzBbqHInZgBlLaOpu8Iv11jP9DJEG-e1auAHDsh6S,因为我想通过不同的服务(例如邮戳)发送注册邮件

如何做到这一点?

最佳答案

Accounts.sendEnrollmentEmail(userId, email) 函数生成一个随机 token 并将其保存在用户的 services.password.reset.token 字段中。

生成 token 的代码是:

  var token = Random.secret();
  var when = new Date();
  var tokenRecord = {
    token: token,
    email: email,
    when: when
  };
  Meteor.users.update(userId, {$set: {
    "services.password.reset": tokenRecord
  }});

(可以查看函数源码here)

然后它使用 Email 包向用户发送电子邮件。如果您想使用不同的服务来发送电子邮件,您基本上有 2 个选择:

  • 自己使用相同的约定(即,创建相同的记录并在您自己的函数中使用您自己的电子邮件服务)。
  • 使用现有功能,允许邮件发送失败,然后在用户的文档中查询 token 并自行发送电子邮件。

这两个都不是特别好的选择,但暂时都可以。我希望他们将这部分重构为它自己的功能。

请注意,帐户包预计会在下一个 Meteor 版本发布时发生一些变化。

顺便说一句,此功能与 Accounts.sendResetPasswordEmail 非常相似,您可能还希望覆盖或创建自己的版本。

关于javascript - Meteor.js - 获取/获取注册 token (来自 Accounts.sendEnrollmentEmail),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40065524/

相关文章:

javascript - 如何在 Meteor 应用程序中包含外部 JS 库?

Javascript数组

javascript - 在 ReactJS 中清除 setInterval()

javascript - JSON 架构 : "allof" with "additionalProperties"

javascript - 在 {{#each array}} block 中触发模板事件时获取 _id

javascript - 使用javascript在MongoDB中聚合查询试图将UTC字符串日期转换为Date对象

meteor - DDP调用拦截

javascript - 我如何初始化 Angular "Hello World' 应用程序

javascript - 为什么 angular.forEach 中的 Angular 会递增而不是递减?

ssl - meteor SSL 连接