我现在正在使用 sveltekit 和 Supabase 进行身份验证
RLS 已打开,我遇到的一个问题是在我注销后,我使用另一封电子邮件登录,我可以看到上一个会话的信息,当我硬刷新时,我会看到正确的数据。我不确定如何解决这个问题
在我的 store
export const user = readable(null, (set) => {
set(supabase.auth.user());
const unsubscribe = supabase.auth.onAuthStateChange((_, session) => {
session ? set(session.user) : set(null);
});
return () => {
unsubscribe.data.unsubscribe();
};
});
回答1
我目前有类似的问题。注销后,旧用户仍然以某种方式坚持。
我的身份验证仅在客户端。我使用 sveltekit (作为静态站点生成器)
在 signOut() 之后仍然有 sb-refresh-token cookie 和 sb-access-token cookie 与 jwt 因此, supabase.auth.getUser() 仍然让我成为(旧)用户
所以用户不会被注销。
对我有帮助的是在注销后重新加载页面()
也就是不使用我的框架的链接和 goto() 函数,而是使用浏览器函数
window.location.href = '/loggedOut';
这为我删除了 cookie