我对 SvelteKit 和 Supabase 都很陌生,并且自己做了一些实验,但我想知道使用这两种技术实现用户身份验证的最佳方法是什么。
我目前在 __layout.svelte 文件中有以下内容,以便我的 Web 应用程序上的每个页面都可以访问会话,但我不确定如何使用 cookie 实现持久用户身份验证。
如果有人可以指导我和未来的用户,那就太棒了!
<script>
import supabase from "$lib/api";
import { page, session } from '$app/stores';
import { browser } from '$app/env';
if(browser){
$session = supabase.auth.session();
supabase.auth.onAuthStateChange((event, sesh) => {
$session = sesh;
});
}
</script>
绝对不清楚如何做到这一点。我试图让它变得简单并将其放入用户可读的存储中:
export const user = readable<any>(null, (set) => {
set(supabase.auth.user());
const unsubscribe = supabase.auth.onAuthStateChange((_, session) => {
session ? set(session.user) : set(null);
});
return () => {
unsubscribe.data.unsubscribe();
}
});
现在您可以在任何地方使用
$user
来获取会话,或者查看是否有会话。
J
supabase 项目发布了示例存储库和快速入门指南,这有助于抽象一些样板文件。有相当多的修改需要添加,所以我不会在此处重新粘贴所有信息,因为如果不查看完整的解决方案,它就没有意义。这一切都基于帮助程序库https://supabase.com/docs/guides/auth/auth-helpers/sveltekit
虽然 Supabase 文档没有错,但有足够多的错误让人们偏离正轨。在设法让一切正常工作后,我决定建立一个仓库。希望有帮助!