sveltekit - 有没有一种方法可以在不进行硬刷新的情况下删除以前的会话(sveltekit 和 Supabase)

我现在正在使用 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

相似文章