Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在firebase存储规则中设置多个用户权限_Firebase_Firebase Storage_Firebase Security - Fatal编程技术网

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

如何在firebase存储规则中设置多个用户权限,firebase,firebase-storage,firebase-security,Firebase,Firebase Storage,Firebase Security,我正在使用firestore构建一个web应用程序,它允许用户在项目上进行协作并共享每个项目中的文件。我正在尝试设置firebase存储规则来控制用户对每个文件的读取权限,以便只有参与项目的用户才能读取该文件。我将每个有权读取文件的用户的UID写入元数据,因此元数据自定义数据包含诸如“user0”:uid0,“user1”:uid1等值对。我的问题是如何设置一个存储规则,只允许UID在元数据中的用户读取文件。我试过这样的方法: allow read: if request.auth.uid in

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

allow read: if request.auth.uid in resource.metadata;
allow read: if resource.metadata[request.auth.uid] == "1";
但它不起作用。我唯一能去工作的是:

 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”这样的东西起作用?或者有人可以推荐另一种处理文件访问权限的方法,在这种方法中,我可以为每个文件赋予不同数量的用户权限。

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

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

您可以拥有尽可能多的用户,以适应负载。

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

allow read: if request.auth.uid in resource.metadata;
allow read: if resource.metadata[request.auth.uid] == "1";
您可以拥有尽可能多的用户,以适应有效负载