当前位置: 首页 > 知识库问答 >
问题:

如何在firebase存储规则中设置多个用户权限

澹台庆
2023-03-14

我正在使用firestore构建一个Web应用程序,允许用户在项目上进行合作,并在每个项目中共享文件。我试图设置firebase存储规则来控制用户对每个文件的读取权限,因此只有参与项目的用户才能读取该文件。我将每个有权读取文件的用户的uid写入元数据,因此元数据自定义数据包含值对,如:'user0':uid0、'user1':uid1等。我的问题是如何设置存储规则,只允许元数据中有uid的用户读取文件。我尝试过这样的方法:

allow read: if request.auth.uid in resource.metadata;
 allow read: if request.auth.uid == resource.metadata.user0 ||
                                 request.auth.uid == resource.metadata.user1 ||
                     request.auth.uid == resource.metadata.user2 ||
                     request.auth.uid == resource.metadata.user3 ||
                     request.auth.uid == resource.metadata.user4 ||
                     request.auth.uid == resource.metadata.user5 ||
                     request.auth.uid == resource.metadata.user6 ||
                     request.auth.uid == resource.metadata.user7 ||
                     request.auth.uid == resource.metadata.user8 ||
                     request.auth.uid == resource.metadata.user9;

但我必须事先决定有多少用户可以共享一个文件,这不符合我的项目要求。

有没有办法让类似“if request.auth.uid in resource.metadata”这样的东西起作用?或者有人可以推荐另一种处理文件访问权限的方法,在这种方法中,我可以为每个文件赋予可变数量的用户权限?

共有1个答案

艾和通
2023-03-14

不要使用名为user0的键,而是使用用户的实际UID作为元数据键,并为其分配一些虚拟值,如“1”。现在你的规则写起来容易多了。可能是这样的:

allow read: if resource.metadata[request.auth.uid] == "1";

并且您可以拥有尽可能多的用户来容纳可编辑的元数据负载。

 类似资料:
  • 只是一个关于如何实现多个Firebase存储安全规则的简短问题。 事实上,我想限制可以上传的文件的大小,但保留我的认证规则。 我一直在阅读上一篇文章,它给了我一个关于如何限制每个文件的上传大小的提示,但我仍然在努力实现“匹配/files/{fileName}”与身份验证规则的某个地方。 经过多次尝试,这是我在写这篇文章之前的最后一次迭代: 当然,我确实阅读了官方文档,但似乎我仍然无法正确理解。

  • 拒绝许可。无法访问存储桶..请访问Firebase控制台中的Storage选项卡,为您的存储桶启用Firebase存储,并确保您有足够的权限来正确提供资源 在谷歌搜索如何设置这些安全规则,我不确定什么是正确的答案。一些答案建议我在代码中编写方法来授予权限,但文档建议我需要在Firebase的端进行。 这是其中一个例子 我无法理解人们的回答 就像几个月前的这张 有人能解释一下当前的Firebase(

  • 我目前正在使用NodeJS、HTML和Firebase编写一个web站点,用于数据库服务、身份验证和存储。我目前遇到的问题是Firebase存储规则不能按照我对文档的解释工作。 我的Firebase存储实例的目录结构如下所示(明显有假的UID):

  • 我有以下解析器规则: 和以下lexer规则: 有了上面的规则,我想能够写出下面的代码:

  • 如何在Firebase实时数据库中设置安全规则? 我得到了这个信息。 您选择以测试模式开始开发,这将导致您的Cloud Fi还原数据库完全发布在Internet上。您的应用程序更容易受到攻击,因此您的Fi还原安全规则已设置为在头30天后停止接收任何请求。 系统将开始拒绝发送到Firestore数据库的所有客户端请求。在此之前,请编写高强度的安全规则,以便应用程序能够正常运行,同时正确保护您的数据。