基于关系表数据的行级安全性



我正在进入Suabase,为了练习,我正在制作一个简化的网站生成器
但是,我遇到了行级安全策略方面的问题。

我有三张表:

  • 用户→与用户的信息,如名字,姓氏等
  • 网站→所有网站
  • user_website→包含哪个网站属于哪个人的信息(因为一个网站可以由多个用户拥有/编辑(
用户
user_id

您可以定义这样的策略:

CREATE POLICY may_edit ON website
FOR UPDATE TO PUBLIC
USING (EXISTS
(SELECT 1 FROM user_website
WHERE user_website.website_id = website.website_id
AND user_website.user_id = uid()
)
);

这里,uid()是一个返回当前用户ID的函数。

此政策将允许每个人修改自己的网站。

我打电话给一个朋友寻求帮助,他指出了Supadase文档中关于"带有联接的策略"。。。但它仍然对我不起作用。

原因是表格网站上的RLS策略引用了表格用户网站,该网站还不允许用户访问任何内容。

解决方案

RLS政策,可在网站上选择:

auth.uid() in (
select user_id from user_website
where website_id = website.website_id
)

用户网站上选择的RLS策略:

auth.uid() = user_id

最新更新