存储

所有权机制


在 Supabase Storage 中创建新存储桶或对象时,系统会自动为其分配所有者。所有者是创建该资源的用户,其值来源于 JWT 中的 sub 声明。 我们将 owner 存储在 owner_id 列中。

访问控制

资源所有权本身并不提供任何访问控制。但您可以通过针对存储资源实施范围限定到其所有者的访问控制来强制执行所有权。

例如,您可以实现一个策略,规定只有对象的所有者才能删除它。为此,需要检查对象的 owner_id 字段并与 JWT 的 sub 声明进行比较:

1
2
3
4
5
6
7
create policy "用户可删除自己的对象"on storage.objectsfor deleteto authenticatedusing ( owner_id = (select auth.uid()));

RLS 策略只是实施访问控制的一种方式。您也可以按照相同的模式在服务器代码中实现访问控制。