访问URL,而无需在Firebase存储中访问象征



我有一个firebase存储下载url,例如

https://firebasestorage.googleapis.com/v0/b/siren-5ee7.appspot.com/o/profile/c6jnlr0f4czbpv7wf0rewhunvor33?

如何无需代币参数访问此URL?

例如,如果我在没有令牌的情况下访问URL上方,则会出现403个错误,显示Permisson被拒绝。

我的Firebase存储安全规则如下:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

此文件位于/etc文件中。我该怎么做?

尝试更改规则:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read;
      allow write: if request.auth != null;
    }
  }
}

据我了解,您正在尝试使整个存储桶公开可用。使用Firebase Access规则可能不是最好的,您可能需要通过Google Cloud的存储层提供存储键读取访问。

为此,最简单的方法之一是使用Google Cloud Console存储。

选择存储桶,单击"存储桶"以配置并打开"权限"选项卡。由于这是Firebase托管桶,因此它将具有Google所说的细粒访问控制。不用担心,添加公共访问非常简单。单击添加成员按钮,然后,在侧边栏上,将allUsers添加为新成员,并赋予其storage>存储对象查看器。您可以在"存储文档"中看到更多细节。

这将通过<bucketname>.storage.googleapis.com公开查看存储桶。如果您在Firebase中创建了与您拥有并在Google搜索控制台中验证的域相匹配的额外存储桶,则可以创建以您的自定义域名命名的桶,并使用指向c.storage.googleapis.com.的自定义域的CNAME公开访问(这将是这样)仅适用于HTTP,而不是HTTPS)。您可以在存储端点文档中查看更多细节,Google Cloud的文档说明了它的解释要比我要好得多。希望这会有所帮助!

如果您需要在没有令牌的情况下进行allow accessing only the images的规则,则必须执行以下操作:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read: if request.auth!=null || resource.contentType.matches('image/.*');
      allow write: if request.auth!=null;
    }
  }
}

如果您需要访问某些URL(image)而无需代币参数,请使用以下规则:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /images/users/default.png {
      allow read;
    }
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

如果您需要在没有令牌参数的情况下访问某些文件夹,请使用以下规则:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /images/{wildcardpath=**} {
      allow read;
    }
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

注意:将URL或文件夹更改为

相关内容

  • 没有找到相关文章

最新更新