临汾市网站建设_网站建设公司_Python_seo优化
2026/1/16 19:39:41 网站建设 项目流程

来源

https://chatgpt.com/share/6969eb21-0e50-8006-b6f3-6b9413d3be7a

RLS安全,设置用户和某个特定人可以进行修改

using ( user_id = auth.uid() ) 上述代码中,除了user_id = auth.uid(),我还想加入user_id='1922d5ca-aa33-4abc-9759-6ccb05d6b533'也可以查询数据,该怎么做?

注意细节:user_id=auth.uid()与auth.uid()='xxx-xxx-xxx-xxx'的区别

using ( auth.uid() = user_id or auth.uid() = '19c8d5ca-7233-4abc-9759-6dbb05d6b570' ); 代表已登录的用户自己与某个管理员可以得到结果
using ( user_id = auth.uid() or user_id = '19aad5ca-7cc3-4ddc-9129-6db215fdb510' ); 如果是select语句,意味着仅仅能查询到自己与'19aad5-xxx'的记录 不是管理员可以查询到所有数据的功能

下面这个公式很重要,核心观点

最终推荐完整版(UPDATE 场景)

alter policy "owner or system user" on your_table for update to public using ( user_id = auth.uid() or user_id = '19c8d5ca-7233-4abc-9759-6dbb05d6b570'::uuid ) with check ( user_id = auth.uid() or user_id = '19c8d5ca-7233-4abc-9759-6dbb05d6b570'::uuid );

using()与with check()的区别是什么?

普通用户只能看自己,管理员可以看所有

select

update/delete

某个role才能insert

const { data: { session }, error } = await supabase.auth.getSession() console.log('🟩 🟩 🟩 user', session); //session.user.role就有"limited_user"

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询