在 Firestore 中为移动应用程序实现安全组的最佳实践方法是什么(在本例中为 React-native,它有效地使用“Web”界面)。举一个更具体的例子:
- 使用能够“共享”Firestore 中存储的数据(例如待办事项列表)的移动应用的用户[使用“网络”界面构建]
- 力求采用极低摩擦的方法。理想情况下,主要用户首先使用“匿名”身份验证方法使用该应用
- 然后用户希望与其他人安全地“共享”数据(例如待办事项列表)
我的问题实际上是如何总体上实现上述内容,但涵盖以下方面
- 问题 1 - 就用户体验方法而言,您要求/让用户在这里做什么?将其构建到应用代码中吗?
- 问题 2 - 如何构建 Firestore 数据库来处理这个问题?即结构会是什么样子 - 也许所有数据都位于主要用户 UID 下
- 问题 3 - 如何构建 Firestore 规则来保护它?例如您如何在这里进行“组内用户”类型检查?例子?
- Q4 - 应用程序代码是什么样的:
- 当主用户点击“共享”时创建用户安全组
- 要将用户添加到组中吗?
- 访问数据?
总的来说,热衷于了解让用户安全地(在带有 firestore“web”sdk 的移动应用程序上,即 react native 包装器)将其数据(例如待办事项列表)共享给他/她特别选择的其他人的最低摩擦方法/以某种方式批准。
最佳答案
对于后代,这个问题已经在 google-cloud-firestore-discuss 上得到了解答。群组:https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/google-cloud-firestore-discuss/KEs4is11LXc/xs2zIvQmCQAJ
TL;博士:
service cloud.firestore {
match /databases/{database}/documents {
match /lists/{listId} {
// step 1
allow create: if request.resource.data.owner == request.auth.uid;
// step 3
allow get: if exists(/databases/$(database)/documents/lists/$(listId)/users/$(request.auth.uid));
match /users/{userId} {
// step 2
allow create: if request.auth.uid == get(/databases/$(database)/documents/lists/$(listId)).data.owner;
}
}
}
}
关于firebase - 如何使用 Firestore 实现用户组类型安全(例如共享待办事项列表)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47191502/