Supabase中已有邮箱注册场景的处理方案问询
关于Supabase注册功能中已存在邮箱的检测与处理问题
我在用Supabase开发注册功能,希望在用户使用系统中已存在的邮箱注册时给出反馈,但目前难以识别该场景。
当尝试用已存在的邮箱注册时,收到如下响应:
{ "data": { "session": null, "user": { "id": "b84ad9fb-9f81-42c4-9c5b-3d08b5e04156", "aud": "authenticated", "role": "authenticated", "email": "example@email.com", "phone": "", ... } }, "error": null }
我理解Supabase返回该响应是为了避免泄露已有邮箱信息,但不确定如何在应用中处理此场景:
- 是否有推荐方式检测邮箱已被使用并向用户提供合适反馈?
- 我是否应该用
if (error == null)这类条件处理,还是有更具体的方案?
求安全且用户友好的处理建议!
2023年9月7日更新:
我已添加一个临时解决方案,完整代码片段如下:
const handleSignUp = async () => { const response = await supabase.auth.signUp({ email, password, options: { emailRedirectTo: `${location.origin}/auth/callback`, }, }); // 打印注册响应 console.log("Sign-up response:", JSON.stringify(response, null, 2)); if (response.data && response.data.user) { // 打印identities数组 console.log("Identities array:", JSON.stringify(response.data.user.identities, null, 2)); // 检查用户是否被创建 if (response.data.user.identities && response.data.user.identities.length > 0) { console.log("注册成功!"); } else { console.log("该邮箱已被占用。"); const signInResponse = await supabase.auth.signInWithPassword({ email, password, }); if (signInResponse.error) { console.error("登录时出错:", signInResponse.error.message); } else { console.log("已成功登录现有用户!"); } } } else { console.error("注册时出错:", response.error?.message); } router.refresh(); };
内容的提问来源于stack exchange,提问作者Vladimirzb
相关产品推荐
相关产品推荐

