Supabase auth.update() email_refresh_token 工作流程

问题描述 投票:0回答:2

当我想让经过身份验证的用户更改其电子邮件地址时,我使用 auth.update(),可在此处找到 https://supabase.com/docs/reference/javascript/auth-update

顺便说一句,我只使用魔术链接身份验证。

现在我的项目设置为仅需要一封电子邮件确认。

我正在使用 vue 3 和 vu-router v4

当我运行这个函数时

 async handleUpdateUser(newEmail: string) {
      try {
        const { user, error } = await supabase.auth.update({
          email: newEmail,
        });

        if (error) throw error;
      } catch (error) {
        console.log(error);
      }
    },

我记录的 onAuthStateChange 显示为 USER_UPDATED,服务器上的 users.auth 表显示新内容,并且在控制台中的用户对象上看到 new_email 属性

我的问题是如何将 new_emial 变成电子邮件。

发送到新电子邮件的链接如下

https:// Correct_info_is_here.supabase.co/auth/v1/verify?token=there_is_a_token_here&type=email_change&redirect_to=http://localhost:3000/

当我单击链接时,它会重定向到一个新窗口,就像初始注册时一样,但除此之外没有任何变化。

我找到了这个答案, https://github.com/supabase/supabase/discussions/1763

但我不知道如何实施该程序。弄清楚如何获取该令牌的唯一方法是通过客户端上的 rpc 函数,但我不知道收到该令牌后如何处理该令牌。

另外,当我使用 vue-router 时,我可能会添加,我会像这样记录 beforeEach 的 to 和 from 属性

router.beforeEach(async (to, from) => {
  console.log("to", to);
  console.log("from", from);...

当我加载确认链接时,它不会像从原始注册链接重定向时那样显示任何有用的内容。

任何帮助将不胜感激。

vue-router supabase supabase-database
2个回答
1
投票

我遇到了类似的问题,就我而言,它归结为 Supabase Studio 中的“双重确认电子邮件更改”设置。

来自

supabase.auth.update
的 Supabase 文档:

电子邮件更新将默认向用户的当前电子邮件地址和新电子邮件地址发送一封带有确认链接的电子邮件。要关闭此行为并仅向新电子邮件发送单个确认链接,请关闭“身份验证”->“设置”下的“双重确认电子邮件更改”。

因此可能发生的情况是,当您请求更改电子邮件时,用户会收到两封电子邮件:一封是旧电子邮件地址,另一封是新电子邮件地址。 用户必须单击这两个链接才能真正更新该用户的

email
列。

至少,这是我的案例中的问题 - 我希望它有帮助!


0
投票

这正是我的问题。然而,supabase 中的 UI 更改意味着它现在位于提供商 > 电子邮件 > 安全电子邮件更改下。

关闭supabase中的电子邮件双重验证

© www.soinside.com 2019 - 2024. All rights reserved.