resetPasswordForEmail()

resetPasswordForEmail() 方法会向一个电子邮件地址发送密码重置请求。

  • 密码重置流程包含两个主要步骤:1. 允许用户通过密码重置链接登录。2. 更新用户的密码。

  • resetPasswordForEmail() 方法仅会向用户的电子邮件发送密码重置链接。若要更新用户的密码,请参阅 updateUser() 方法。

  • 当密码恢复链接被点击时,会触发一个 SIGNED_INPASSWORD_RECOVERY 事件。你可以使用 onAuthStateChange() 方法来监听这些事件,并在其上调用一个回调函数。

  • 当用户点击邮件中的重置链接后,他们将被重定向回您的应用程序。您可以通过 redirectTo 参数配置用户重定向的URL。请参阅重定向URL和通配符,以添加其他重定向URL到您的项目中。

  • 成功重定向用户后,提示他们输入一个新密码并调用 updateUser() ,使用方法如下:

1const { data, error } = await supabase.auth.updateUser({
2  password: new_password
3})

案例教程

案例1 (重置密码)#

1const { data, error } = await supabase.auth.resetPasswordForEmail(email, {
2redirectTo: 'https://example.com/update-password',
3})

案例2 (重置密码(React))#

1/**
2* Step 1: Send the user an email to get a password reset token.
3* This email contains a link which sends the user back to your application.
4*/
5const { data, error } = await supabase.auth
6.resetPasswordForEmail('user@email.com')
7
8/**
9* Step 2: Once the user is redirected back to your application,
10* ask the user to reset their password.
11*/
12useEffect(() => {
13 supabase.auth.onAuthStateChange(async (event, session) => {
14   if (event == "PASSWORD_RECOVERY") {
15     const newPassword = prompt("What would you like your new password to be?");
16     const { data, error } = await supabase.auth
17       .updateUser({ password: newPassword })
18
19     if (data) alert("Password updated successfully!")
20     if (error) alert("There was an error updating your password.")
21   }
22 })
23}, [])

参数说明

  • 邮箱(email)[必要参数]
    string类型

    用户的电子邮件地址。

  • 选项(option)[必要参数]
    object类型

      特性
    • captchaToken[可选参数]
      string类型

      当用户完成网站上的验证码时,收到的验证令牌。

    • redirectTo[可选参数]
      string类型

      点击密码重置链接后,这是将用户重定向的URL。