跳至内容

无需密码

无需密码包允许您为用户创建登录,而无需用户提供密码。注册或登录时,系统会向用户的电子邮件发送一封包含确认登录代码的电子邮件以及直接登录的链接。由于用户正在回复电子邮件,因此它也会验证电子邮件。

无需密码流程的第一步是用户注册或请求将其电子邮件地址发送到其电子邮件地址。您可以使用以下方法执行此操作

Accounts.requestLoginTokenForUser

仅限客户端

摘要

请求登录令牌。

参数

源代码
名称类型描述必需
选项对象
回调函数

可选回调。成功时不带参数调用,失败时带单个Error参数调用。

选项

名称类型描述必需
选择器字符串

获取令牌的电子邮件地址或用户名或 MongoDB 选择器。

userData字符串

创建用户时,如果选择器没有产生结果,请使用此数据。

选项对象

例如 userCreationDisabled。

js
import { Accounts } from "meteor/accounts-base";


const result = Accounts.requestLoginTokenForUser();
  options,
() => {}, // this param is optional
);

如果用户正在注册,您可以像在Accounts.createUser中一样传入userData对象。

Meteor.passwordlessLoginWithToken

仅限客户端

摘要

使用一次性令牌登录用户。

参数

源代码
名称类型描述必需
选择器对象或字符串

用户名、电子邮件或自定义选择器以识别用户。

令牌字符串

服务器生成的一次性令牌

回调函数

可选回调。成功时不带参数调用,失败时带单个Error参数调用。

js
import { Meteor } from "meteor/meteor";


const result = Meteor.passwordlessLoginWithToken();
  selector,
"token",

() => {}, // this param is optional
);

无需密码流程中的第二步。与所有其他loginWith函数一样,调用此方法以使用用户输入的令牌登录用户。

Accounts.sendLoginTokenEmail

仅限服务器

摘要

发送一封包含用户可用于使用令牌登录的链接的电子邮件。

参数

源代码
名称类型描述必需
选项对象

选项

名称类型描述必需
userId字符串

要发送电子邮件的用户 ID。

序列字符串

要提供的令牌

电子邮件字符串

要发送电子邮件的用户地址。

额外对象

可选。其他属性

js
import { Accounts } from "meteor/accounts-base";

/** @returns Object */
const result = Accounts.sendLoginTokenEmail();
  options
);

如果您想手动向用户发送电子邮件以使用来自服务器的令牌登录,请使用此函数。请注意,您需要自己创建令牌/序列并将其保存在数据库中。如果您想更改令牌的外观或生成方式,这很有用,但除非您确定自己在做什么,否则我们不建议这样做。

设置选项

您可以在服务器中使用函数Accounts.config更改此包的一些设置

  • tokenSequenceLength:使用Accounts.config({tokenSequenceLength: _Number_})设置生成的令牌序列的大小。默认为 6。

  • loginTokenExpirationHours:使用Accounts.config({loginTokenExpirationHours: _Number_})设置发送的令牌的有效时间。因为它只是一个数字,所以您可以使用例如 0.5 使令牌仅在半小时内有效。默认为 1 小时。

电子邮件模板

accounts-passwordless 提供了新的模板,您可以编辑这些模板来更改发送代码给用户的电子邮件的外观。电子邮件模板名为sendLoginToken,除了userurl之外,模板还接收一个包含sequence的数据对象,即用户的代码。

javascript
sendLoginToken: {
  text: (user, url, { sequence }) => {
    /* text template */
  };
}

为该包启用 2FA

您可以通过使用accounts-2fa包将 2FA 添加到您的登录流程中。您可以找到一个显示此外观的示例此处