firebase - 在 Firestore 安全规则中列出类型安全
问题描述
在我的 Firestore 安全规则中,我想要一个规则来检查列表的所有元素是否都是字符串类型。
我的“用户”文档有一个名为“朋友”的字段。它是一个字符串列表,代表其他用户文档的文档 ID。这些是我目前的规则:
function userIsAuthenticated() {
return request.auth != null;
}
match /users/{userID} {
function resourceIsValidUser() {
return displayNameIsValid();
}
function displayNameIsValid() {
return request.resource.data.displayName is string &&
request.resource.data.displayName.size() > 0 &&
request.resource.data.displayName.size() < 17;
}
function photoUrlIsValid() {
return request.resource.data.photoUrl is string;
}
function friendsIsValid() {
return request.resource.data.friends is list;
}
function userIsUserOwner() {
return request.auth.uid == userID;
}
allow read: if userIsAuthenticated();
allow write: if
userIsAuthenticated() &&
resourceIsValidUser() &&
userIsUserOwner();
}
有什么我可以添加到friendsIsValid()
函数中以确保朋友列表只包含字符串值吗?
解决方案
目前没有检查数组所有元素类型的函数。由于也无法迭代数组,因此您现在唯一能做的就是预测数组的大小并单独检查每个元素,例如array[0] is string && array[1] is string
等等。
Firebase 团队意识到可能需要一些规则来执行此操作。如果您向Firebase 支持提交功能请求,这将有助于升级问题。
推荐阅读
- python - Python 3.9 和 Django 3.2.0 的 django-cors-headers 问题
- c# - 等效于 C# 中 java 的 Optional.ifPresent
- qt - 如果已经使用 Qt Installer Framework 安装了 App,请卸载它
- ios - UINavigationbar 后退按钮丢失
- angular - 动态设置 [matMenuTriggerFor]
- amazon-ec2 - 使用 terraform 将静态 IP 地址分配给新的 aws 实例
- c# - 什么是 launchProfile.json 中的“dotnet run”默认配置文件设置?
- c++ - 如何通过带有多 for 循环的 openmp 加速我的代码
- java - 如何将带逗号的字符串转换为整数和双精度
- android - 应用在 Chrome 中运行良好,但在 Android 中运行不佳