firebase - Firestore 规则对象
问题描述
我正在尝试在我的数据库中设置一些基本的 Firestore 安全规则。我在查找相关文档以了解如何执行此操作时遇到了一些麻烦。
目前我的文档结构如下:
project(document): {
createdBy(string): chris@emailaddress.com,
users(object): {
{ graham@emailaddress.com(object): access: write },
{ paul@emailaddress.com(object): access: read }
}
}
我想设置我的规则,以便:
用户必须登录才能读取、写入或删除任何内容
如果将用户添加到具有“读取”访问权限的项目中,他们只能读取文档。
如果用户设置了写访问权限,他们可以更新和读取文档,但不能更新
createdBy
字段。如果用户创建了文档,他们可以阅读、更新和删除文档。
我的安全规则是这样设置的:
service cloud.firestore {
match /databases/{database}/documents {
match /projects/{projectId} {
allow read: if existingData().users[getUser()token.email].access != null && isSignedInAndVerified()
allow read, update: if existingData().users[getUser()token.email].access != "write" && isSignedInAndVerified()
allow update, delete: if sameAsEmail(existingData().createdBy) && isSignedInAndVerified()
}
//my functions
function getUser(){
return request.auth
}
function existingData(){
return resource.data
}
function sameAsEmail(resource){
return resource == request.auth.token.email
}
function isSignedInAndVerified() {
return request.auth != null && request.auth.token.email_verified;
}
}
}
解决方案
语法使用不正确 use:getUser().token.email
代替。
推荐阅读
- wordpress - WP 网站重定向到每个新设备中的订单接收页面
- ios - 在前端集成 Plaid API?
- jsp - JSP 代码在较长的用户名上中断
- python - 在 FTPS 服务器上使用 ftplib 列出目录时,sslobj.do_handshake 中的“OSError:[Errno 0] 错误”
- xml - 由 H2 DB 支持的 REST API 在插入带有 XML 字符串的行时的行为与 IBM DB2 不同
- php - PHP 中的 each() 函数
- python-3.x - 在两个不同的 Windows tkinter python 上显示摄像机
- python - 为什么我不能将 .OBJ 文件加载到 Python Ursina 中?
- spring - MongoTemplate 中的属性引用异常
- elasticsearch - NEST 2.x 中 searchDescriptor.facetTerms 的替代品是什么?