Supabase是否支持逻辑视图的行级安全?更改所有者为authenticated可行吗?
Supabase 视图行级安全(RLS)支持说明
Supabase 支持对逻辑视图应用行级安全(RLS),但仅将视图所有者改为authenticated的说法并不准确,完整的配置需要结合 PostgreSQL 的安全规则和 Supabase 的权限体系,具体步骤如下:
- 前提确认:确保视图依赖的基础表已启用 RLS(你的场景已满足此条件)
- 创建视图时添加
security_invoker属性:该属性让视图以调用者身份访问基础表,而非视图所有者身份,避免绕过基础表的 RLS 规则。示例语句:CREATE VIEW your_view_name WITH (security_invoker = true) AS SELECT * FROM your_base_table; - 为视图启用 RLS:
ALTER VIEW your_view_name ENABLE ROW LEVEL SECURITY; - 为视图添加针对性的 RLS 策略:比如允许
authenticated角色访问符合条件的数据,示例:CREATE POLICY "Authenticated users access own data" ON your_view_name FOR SELECT TO authenticated USING (user_id = auth.uid());
如果仅修改视图所有者为authenticated,却不配置security_invoker和视图自身的 RLS,视图会以所有者身份直接绕过基础表的 RLS 限制,反而会破坏权限控制逻辑,不符合安全需求。
内容的提问来源于stack exchange,提问作者Davout
相关产品推荐
相关产品推荐

