You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Supabase对接第三方认证提供商FluffyScratch实现身份验证

自定义FluffyScratch认证对接Supabase实现方案

1. 确保生成的JWT符合Supabase校验规则

Supabase会自动校验传入的JWT合法性,你生成JWT时必须满足以下要求:

  • 签名密钥必须使用你的Supabase项目对应的JWT_SECRET,可在Supabase后台「项目设置 - API」页面获取
  • JWT payload必须包含以下必填字段:
    • sub:填写从FluffyScratch获取的用户唯一ID,必须全局唯一
    • role:固定填写authenticated,用于匹配Supabase行级安全(RLS)的已认证用户规则
    • exp:设置JWT过期时间,建议设置为1~24小时,避免长期有效带来的安全风险
  • 可选添加user_metadata、app_metadata字段存储用户的Scratch用户名、头像等自定义信息,后续可直接在数据库侧读取

2. 前端注入JWT到Supabase客户端

你不需要调用GoTrue提供的signUp/signInWithPassword这类原生认证方法,直接使用Supabase客户端提供的setSession方法注入你生成的JWT即可:

// 从你的SvelteKit后端接口获取到生成的JWT后执行
const { error } = await supabase.auth.setSession({
  access_token: "你生成的合法JWT字符串",
  refresh_token: "" // 暂未实现刷新token逻辑可填空,过期后引导用户重新走FluffyScratch认证流程
})

注入完成后,后续所有Supabase客户端的数据库请求都会自动携带该JWT,Supabase会自动完成身份校验和RLS规则匹配。

3. 可选:同步用户数据到Supabase auth表

如果你需要用到Supabase Auth的用户管理能力,可以在SvelteKit服务端接口校验FluffyScratch授权code有效后,使用Supabase Admin客户端同步用户到内置的auth.users表:

// 服务端初始化Admin客户端,注意service_role密钥绝对不能泄露到前端
import { createClient } from '@supabase/supabase-js'

const supabaseAdmin = createClient(
  process.env.SUPABASE_URL,
  process.env.SUPABASE_SERVICE_ROLE_KEY,
  {
    auth: {
      autoRefreshToken: false,
      persistSession: false
    }
  }
)

// 同步用户信息
const { data: user, error } = await supabaseAdmin.auth.admin.upsertUser({
  id: 从FluffyScratch获取的用户ID, // 和JWT的sub字段保持一致
  app_metadata: {
    provider: 'fluffyscratch',
    scratch_username: 从FluffyScratch获取的用户名
  },
  email_confirmed_at: new Date().toISOString() // 第三方认证直接标记为已确认
})

4. RLS规则适配

完成上述配置后,你编写行级安全策略时可直接使用auth.uid()获取当前登录用户的ID(即JWT中sub字段的值),示例规则如下:

-- 示例:仅允许用户操作自己创建的内容
CREATE POLICY "用户可访问自己的私有数据" ON private_table
FOR ALL USING (user_id = auth.uid());

注意事项

  • 所有JWT签名、用户同步逻辑必须放在服务端执行,禁止将JWT_SECRET、SUPABASE_SERVICE_ROLE_KEY暴露到前端
  • JWT payload仅可存储非敏感信息,JWT为明文编码,所有人都可解码查看内容
  • 若需要实现JWT自动刷新,可自行维护refresh_token逻辑,过期后重新生成JWT调用setSession更新即可

内容的提问来源于stack exchange,提问作者webdev03

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:06:11