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

Supabase行级安全(RLS)失效:认证用户无法读取自身项目数据

Supabase行级安全(RLS)配置排查:认证用户无法读取自身项目数据

问题背景

配置Supabase行级安全(RLS),要求仅认证用户能通过auth.uid()访问自己的项目。目前已成功将项目数据写入数据库,但无法读取数据。

当前配置与代码

RLS策略配置

RLS策略配置截图

项目表结构

项目表结构截图

数据获取代码

export async function getProjects() { 
  let { data: projects, error } = await supabase 
    .from("projects") 
    .select("*") 
    .order("created_at", { ascending: true }); 
  if (error) { 
    console.log(error); 
  } 
  console.log(projects); 
  return projects; 
}

排查与解决建议

  • 检查SELECT策略规则:确认RLS的SELECT策略条件为user_id = auth.uid(),且策略处于启用状态。需保证策略针对SELECT操作,且正确关联用户ID字段。
  • 验证用户认证状态:调用getProjects前,先通过supabase.auth.getSession()确认用户已完成认证。未认证时auth.uid()返回null,无法匹配数据行。
  • 核对数据的user_id字段:查看数据库中已写入的项目数据,确认user_id字段存储的是当前认证用户的UUID,而非空值或错误ID。
  • 查看错误详情:如果console.log(error)有输出,根据具体信息排查,比如permission denied说明策略未正确授权,需调整规则。
  • 确认表RLS已启用:在Supabase控制台的表设置中,检查projects表的行级安全开关是否已打开。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:28:24