Docs 菜单

Docs 主页开发应用程序Atlas Device SDKs

托管电子邮件/密码用户 - Node.js SDK

在此页面上

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

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

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

注意

确认新用户

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

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

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

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

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

要确认注册用户,请将有效的tokentokenId传递给EmailPasswordAuth.confirmUser()。

const token = "someToken";
const tokenId = "someTokenId";
try {
await app.emailPasswordAuth.confirmUser({ token, tokenId });
// User email address confirmed.
console.log("Successfully confirmed user.");
} catch (err) {
console.log(`User confirmation failed: ${err}`);
}

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

如果提供商配置为发送确认电子邮件,则 Atlas App Services 会在用户注册时自动发送确认电子邮件。该电子邮件包含已配置Email Confirmation URL的链接,该链接带有有效期为30分钟的令牌。如果用户没有在该期限内点击链接并确认,则必须请求新的确认电子邮件。

要向用户发送新的确认电子邮件,请将其电子邮件地址传递给EmailPasswordAuth.resendConfirmationEmail()。

const email = "someone@example.com";
await app.emailPasswordAuth.resendConfirmation({ email });

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

const email = "someone@example.com";
await app.emailPasswordAuth.retryCustomConfirmation({ email });

重置用户密码是一个多步骤的过程。

  1. 在客户端应用程序中,您为用户提供一个用于重置密码的用户界面。 然后,您的 App Services App 可以发送电子邮件或运行自定义函数来确认用户的身份。

  2. 确认用户身份后,即可完成密码重置请求。

  3. 密码重置完成后,用户可以使用新密码登录。

选择您首选的密码重置方法:

  1. 您的 Atlas App Services App

  2. Authentication

  3. Authentication Providers

  4. Email/Password - 然后按EDIT按钮

要发送密码重置电子邮件以确认用户身份,您必须将应用配置为发送密码重置电子邮件。

要开始密码重置过程,请使用用户的电子邮件调用EmailPasswordAuth.sendResetPasswordEmail() 。该电子邮件包含已配置Password Reset URL的链接。用户必须在30分钟内访问此 URL 才能确认重置。

const email = "someone@example.com";
await app.emailPasswordAuth.sendResetPasswordEmail({ email });

在用户访问密码重置电子邮件中的 URL 后,使用用户的电子邮件地址、新密码以及唯一 URL 中提供的tokentokenId调用EmailPasswordAuth.resetPassword()

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

如果用户在 30 分钟内没有访问密码重置电子邮件中的 URL, tokentokenId则会过期。 您必须再次开始密码重置过程。

当您将应用程序配置为运行密码重置函数时,您可以定义在调用EmailPasswordAuth.callResetPasswordFunction() 时应运行的函数。

此函数可以接受用户名、密码和任意数量的其他参数。 您可以使用这些参数指定用户应传递以成功完成密码重置的详细信息,例如安全问题回答或其他挑战。

如果要定义自己的密码重置流程,您可能更愿意使用自定义密码重置函数。 例如,您可以从特定域发送自定义密码重置电子邮件。 或者,您可以使用电子邮件以外的服务来确认用户的身份。

在 App Services 端,您可以定义在调用此方法时运行的自定义密码重置函数。 该函数可以返回三种可能的状态之一:

  • fail

  • pending

  • success

SDK 将fail状态视为错误。 SDK callResetPasswordFunction()不接受返回值,因此它不会向客户端返回pendingsuccess状态。

如果您希望用户采取其他步骤来确认其身份,您的App Services 密码重置函数可能会返回pending 。但是,该返回值不会传递给 SDK 的callResetPasswordFunction() ,因此您的客户端应用程序必须实现自己的逻辑来处理pending状态。

const email = "someone@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
);

您的服务器端函数可能会使用自定义电子邮件提供商发送电子邮件。 或者,您也可以使用短信,通过短信确认用户的身份。

您可以在 App Services 密码重置函数上下文中访问tokentokenId 。如果您通过 App Services 密码重置函数传递此信息,则可以使用特定于平台的深度链接或通用链接将这些值传递回您的应用程序。然后,客户端应用程序可以调用EmailPasswordAuth.resetPassword()来完成密码重置流程。

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

如果您的App Services 密码重置函数在函数内进行了额外验证,或者如果您在尝试重置密码之前已验证用户身份,则可以将 App Services 函数配置为返回success 。但是,该返回值不会传递给 SDK 的callResetPasswordFunction() ,因此您的客户端应用程序必须实现自己的逻辑来处理success状态。

调用本示例中的函数会执行整个密码重置过程。

const email = "someone@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
);
← 用户元数据 - Node.js SDK