Firebase 访问规则中文档ID的第一个字符
我希望获取文档ID,并将该ID的前X个字符与字符串进行比较,以便特定UID可以访问具有该前缀的所有文档 暂时忽略前缀,我尝试使用比较完整文档ID,但在客户端应用程序中收到的权限被拒绝。权限是通过比较Firebase 访问规则中文档ID的第一个字符,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,我希望获取文档ID,并将该ID的前X个字符与字符串进行比较,以便特定UID可以访问具有该前缀的所有文档 暂时忽略前缀,我尝试使用比较完整文档ID,但在客户端应用程序中收到的权限被拒绝。权限是通过比较request.auth.uid授予的,这样它就不是客户端问题了 service cloud.firestore { match /databases/{database}/documents { match /collectionA/{x} { allow read:
request.auth.uid
授予的,这样它就不是客户端问题了
service cloud.firestore {
match /databases/{database}/documents {
match /collectionA/{x} {
allow read: if request.auth.uid == 'ABCD1234' && resource.id == '00153@1529943514.26';
}
}
}
对于您的规则,
x
是文档id字符串,因此您可以将其与resource.id进行比较(可能尚未确定用户是否有权访问资源的任何属性)
你有很多方法来检查一个链接的内容(一定要阅读该链接)
可以使用索引语法提取子字符串:
x[0:2] == 'abc' // the first three characters of the string x
您还可以使用应用正则表达式来检查字符串的开头:
x.matches('^prefix.*') == true
对于您的规则,
x
是文档id字符串,因此您可以将其与resource.id进行比较(可能尚未确定用户是否有权访问资源的任何属性)
你有很多方法来检查一个链接的内容(一定要阅读该链接)
可以使用索引语法提取子字符串:
x[0:2] == 'abc' // the first three characters of the string x
您还可以使用应用正则表达式来检查字符串的开头:
x.matches('^prefix.*') == true
我已将规则修改为使用
x
而不是resource.id
,并且仍然拒绝接收权限。使用名为“test”的全新空白文档进行测试,但仍被拒绝。仅测试了身份验证,并授予了权限。文档ID是Firestore中显示的名称,对吗?您是从客户端应用程序进行测试还是在控制台中使用规则模拟器?我已将规则修改为使用x
,而不是resource.ID
,并且仍然拒绝接收权限。使用名为“test”的全新空白文档进行测试,但仍被拒绝。仅测试了身份验证,并授予了权限。文档ID是Firestore中显示的名称,对吗?您是从客户端应用程序进行测试还是在控制台中使用规则模拟器?