resetPasswordForEmail()
resetPasswordForEmail() 方法会向一个电子邮件地址发送密码重置请求。
密码重置流程包含两个主要步骤:1. 允许用户通过密码重置链接登录。2. 更新用户的密码。
resetPasswordForEmail()
方法仅会向用户的电子邮件发送密码重置链接。若要更新用户的密码,请参阅updateUser()
方法。当密码恢复链接被点击时,会触发一个
SIGNED_IN
和PASSWORD_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。
特性