用于删除的Firebase云存储安全规则

用于删除的Firebase云存储安全规则,firebase,firebase-storage,firebase-security,Firebase,Firebase Storage,Firebase Security,您好,我正在使用Firebase云存储开发web应用程序。我想为设置文件和删除文件设置不同的安全规则。根据文档,write似乎包括了这两个方面。有人知道如何解决这个问题吗 我想做的就是这样 任何人都可以设置文件,如果他们是loggedin 只有设置该文件的用户才能将其删除 您可以通过规则中的request.resource==null检测到正在删除文件 但是,据我所知,文件对象中没有任何属性可以知道是谁创建了该文件 一种常见的方法是将文件存储在标识其创建者的路径下,例如/users/$uid/f

您好,我正在使用Firebase云存储开发web应用程序。我想为设置文件和删除文件设置不同的安全规则。根据文档,
write
似乎包括了这两个方面。有人知道如何解决这个问题吗

我想做的就是这样

  • 任何人都可以设置文件,如果他们是loggedin
  • 只有设置该文件的用户才能将其删除

  • 您可以通过规则中的
    request.resource==null
    检测到正在删除文件

    但是,据我所知,文件对象中没有任何属性可以知道是谁创建了该文件

    一种常见的方法是将文件存储在标识其创建者的路径下,例如
    /users/$uid/filename
    。使用该结构,您可以如下检查:

    match /users/{userId}/profilePicture.png {
      allow read;
      allow write: if request.auth.uid == userId && request.resource == null;
    }
    
    另一种方法是向每个文件的元数据添加
    所有者
    属性,然后检查:

    match /{fileId} {
      allow read;
      allow write: if (request.auth.uid == resource.metadata.owner && request.resource == null);
    }
    

    云函数没有安全规则。只有云存储、云Firestore和实时数据库具有针对客户端应用程序实施的安全规则。使用AdminSDK的云函数绕过了这些规则。感谢您的回复。在标题中写云函数是我的错误。我编辑了标题。我想问一下云存储。太好了!通过提供两个ifs,您可以制定从创建和更新中删除的单独规则。我将尝试这种方法。