Supabase 重置密码错误:“身份验证会话丢失”

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

以下功能失败,并出现错误“Auth Session Missing”

const { error } = await supabase.auth.updateUser({
   password: password,
});

在邮件中获取重置密码链接后,我将用户重定向到“/reset”链接。 我得到的链接看起来像这样

https://www.example.com/reset#access_token=eyJhbGciOiJIUzI1NiIsImtpZCI6Ik5rK1VQTmlRYk9RZ2xXMUUiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNjg5ODg1MjE2LCJpYXQiOjE2ODk4ODE2MTYsImlzcyI6Imh0dHBzOi8vaHR0cHM6Ly9lbnZtbHBnYXlpd3FidWR2YWh2YS5zdXBhYmFzZS5jby9hdXRoL3YxIiwic3ViIjoiYTZiMzE1MjktNDUxOC00YjkyLTg3MzYtZDZmMTkyNTBmMzZhIiwiZW1haWwiOiJkZWVwc2hldHllMUBnbWFpbC5jb20iLCJwaG9uZSI6IiIsImFwcF9tZXRhZGF0YSI6eyJwcm92aWRlciI6ImVtYWlsIiwicHJvdmlkZXJzIjpbImVtYWlsIl19LCJ1c2VyX21ldGFkYXRhIjp7fSwicm9sZSI6ImF1dGhlbnRpY2F0ZWQiLCJhYWwiOiJhYWwxIiwiYW1yIjpbeyJtZXRob2QiOiJvdHAiLCJ0aW1lc3RhbXAiOjE2ODk4ODE2MTZ9XSwic2Vzc2lvbl9pZCI6IjA0YjJlMTRlLThkMDUtNDIwYy1iNmRkLTBjODEzNDhkNjUzZCJ9.AcLI2nO1BbCqCwAgrQ8flIjkvC2kRtKcujfXpqRFVG0&expires_in=3600&refresh_token=rUB74qIa-G3GNh6mpJxWdg&token_type=bearer&type=recovery

但是在提交新密码时我收到错误。

我使用“@supabase/auth-helpers-nextjs”来创建客户端。

next.js supabase next.js13 supabase-js
3个回答
0
投票

某些提供商似乎会自动预加载电子邮件中的 URL,以加快页面加载速度。然而,由于 Supabase 重置链接是为一次性使用而设计的,因此这种预加载操作会导致 URL 过早过期,从而导致用户尝试重置密码时出现错误。

可能的解决方案可能是添加验证码验证或只是一个重定向到 supabase 给出的 url 的按钮


0
投票

现在 Supabase 在 SSR 中有一个新包,可以避免重定向到 next.js 中的 api 路由的问题。您需要使用新的SSR包此处的包

为了避免这个问题,我使用本指南: SSR重置密码

希望它对你有用!


0
投票

当您调用时,supabase 在浏览器中存储 cookie

const { error } = await supabase.auth.updateUser({
   password: password,
});

当您从其他设备或浏览器打开重置密码链接时,它会抛出此错误,因为 cookie 丢失。

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