如何让外部用户访问Supabase指定表?权限策略报错排查
问题解决指南
错误原因
报错ERROR: column "user_id" does not exist的直接原因是你的public.users表没有名为user_id的字段,和是否创建Supabase用户无关,不需要替换成具体用户ID。
解决方案步骤
确认
users表的字段结构
执行以下SQL查看表的具体字段:\d public.users找到你用来关联Supabase Auth用户ID的字段(通常可能是
id、auth_id这类名称,用来存储auth.uid()返回值)。修改策略SQL语句
将原语句中的user_id替换为你表中实际的关联字段。比如如果你的users表用id字段存储用户的Auth ID,修改后的语句如下:create policy "Read-Write Twitter users for external users" on "public"."users" as PERMISSIVE for ALL to external_user_twitter_data using ( auth.uid() = id ) with check ( auth.uid() = id );using子句控制读取/删除权限,确保用户只能操作自己的记录with check子句控制插入/更新权限,确保用户只能创建或修改属于自己的记录auth.uid()会动态获取当前登录用户的ID,无需硬编码具体值
给角色授予基础表权限
确保external_user_twitter_data角色拥有users表的基础操作权限:grant select, insert, update, delete on public.users to external_user_twitter_data;
内容的提问来源于stack exchange,提问作者Milkncookiez
相关产品推荐
相关产品推荐

