Rud*_*udi 5 firebase firebase-security google-cloud-firestore
我想创建一个FireStore规则,在当前日期超过文档中的时间戳值后,将读取特权文件读取到文档.
这适用于博客Web应用程序.EG博主设置了一个博客文章,以便在特定日期向公众开放.
从阅读文档这应该工作,但它没有.
service cloud.firestore {
match /databases/{database}/documents {
match /Articles/{article}{
allow read: if request.time.date() < resource.data.date
}
}
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
小智 7
注意:由于这是我在 Stack Overflow 上的第一个答案,因此我不允许对Frank van Pueffelen的答案发表评论,因此请注意,此解决方案的学分是他的!
该请求有一个request.time时间戳,Firestore 允许在timestamp <> timestamp操作中使用基本的数学运算符,所以你request.time < resource.data.date会工作的;)
service cloud.firestore {
match /databases/{database}/documents {
match /Articles/{article}{
allow read: if request.time < resource.data.date
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是根据我2018年9月29日的个人测试得出的
尝试将 < 切换为 >。
request.time 将是访问文档的时间,而resource.data.date 应该是文档的创建时间戳。
尝试将其用于您的安全规则:
allow read: if request.time > (resource.data.timestampPropertyName + duration.time(1, 0, 0, 0));
Run Code Online (Sandbox Code Playgroud)
uration.time(4, 3, 2, 1) 将创建一个四小时三分钟两秒一纳秒的持续时间。
更多信息请访问: https ://firebase.google.com/docs/firestore/reference/security/#timestamp
保存安全规则后请记住等待一段时间才能生效!
| 归档时间: |
|
| 查看次数: |
1840 次 |
| 最近记录: |