我不知道如何从 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/