Docs 菜单
Docs 主页
/ /
Atlas Device SDKs
/ /

管理电子邮箱/密码用户 — Web SDK

在此页面上

  • Overview
  • 注册新用户帐户
  • 确认新用户的电子邮件地址
  • 完成用户确认
  • 重试用户确认方法
  • 重新发送确认电子邮件
  • 重试用户确认函数
  • 重置用户密码
  • 发送密码重置电子邮件
  • 调用密码重置函数
  • 完成密码重置

Web SDK包含一个客户端对象,允许您管理与电子邮件/密码身份验证提供者关联的用户。

若要注册新的电子邮件/密码用户,请使用用户的电子邮件地址和所需的密码调用 registerUser() 方法。该电子邮件地址不得与其他电子邮件/密码用户关联,并且密码必须介于 6 到 128 个字符之间。

const email = "someone@example.com";
const password = "Pa55w0rd!";
await app.emailPasswordAuth.registerUser({ email, password });

注意

确认新用户

您必须先确认新用户的电子邮件地址,他们才能登录您的应用。

除非将提供商配置为自动确认新用户,否则新用户必须确认拥有自己的电子邮件地址,然后才能登录您的应用。

如果提供商配置为发送确认电子邮件,则Atlas App Services会在用户注册时自动发送确认电子邮件。 该电子邮件包含已配置 Email Confirmation URL的链接,而该链接附带在此电子邮件发送后30分钟内有效的令牌。 如果用户没有收到初始电子邮件或没有及时点击确认链接,您可以使用 SDK重新发送确认电子邮件。

或者,如果提供商配置为运行确认函数,则Atlas App Services会在用户注册时自动运行自定义Atlas Function 。 如果调用自定义确认函数失败,您可以使用 SDK重试用户确认函数。

您需要注册用户的有效 tokentokenId ,以确认其身份并允许其登录。这些值在不同位置可用,具体取决于提供程序配置:

  • 如果提供程序设置为发送确认电子邮件,则tokentokenId值将作为查询参数包含在Email Confirmation URL中。

  • 如果提供商设立为运行确认函数,则tokentokenId值将作为参数传递给该函数。

要确认注册用户,请使用用户的有效 tokentokenId 调用 confirmUser() 方法:

await app.emailPasswordAuth.confirmUser({ token, tokenId });

SDK 提供了各种方法,允许重新发送用户确认邮件或重试自定义确认方法。

要将确认电子邮件重新发送给用户,请使用用户的电子邮件地址调用 resendConfirmationEmail() 方法:

const email = "someone@example.com"; // The user's email address
await app.emailPasswordAuth.resendConfirmationEmail({ email });

Realm 版本新增:Web v1.4.0

要重新运行自定义确认函数,请使用用户的电子邮件地址调用retryCustomConfirmation()方法:

const email = "someone@example.com"; // The user's email address
await app.emailPasswordAuth.retryCustomConfirmation({ email });

如果提供商配置为发送密码重置电子邮件,您可以使用 SDK 向用户发送密码重置电子邮件。 该电子邮件包含已配置Password Reset URL的链接。

// The user's email address
const email = "joe.jasper@example.com";
await app.emailPasswordAuth.sendResetPasswordEmail({ email });

如果提供程序已配置为运行密码重置功能,则可以使用 SDK 运行该功能。传递包含用户电子邮件和新密码的对象。还可以在 App Services 后端的密码重置功能中纳入其他参数。

// The user's email address
const email = "joe.jasper@example.com";
// The new password to use
const password = "newPassw0rd";
// Additional arguments for the reset function
const args = [];
await app.emailPasswordAuth.callResetPasswordFunction(
{ email, password },
...args
);

一旦用户通过发送密码重置电子邮件调用密码重置函数来请求密码重置, Realm就会生成一对唯一的tokentokenId值,用户可以使用这对值在30分钟内完成密码重置的初始请求。

await app.emailPasswordAuth.resetPassword({
password: "newPassw0rd",
token,
tokenId,
});

例子

获取令牌和 TokenID

如果提供商使用内置密码重置电子邮件,则tokentokenId将作为查询参数包含在密码重置 URL 中。您可使用以下方式进行访问:

const params = new URLSearchParams(window.location.search);
const token = params.get("token");
const tokenId = params.get("tokenId");
if (!token || !tokenId) {
throw new Error(
"You can only call resetPassword() if the user followed a confirmation email link"
);
}

后退

对用户进行身份验证 - Web SDK