gpt4 book ai didi

firebase - 如何为 Firestore 规则身份验证(React-Native)传递额外的身份验证参数?

转载 作者:行者123 更新时间:2023-12-04 15:29:29 24 4
gpt4 key购买 nike

我想在我的应用程序中实现基于角色的限制。我在一个集合文档中有用户角色信息。现在我想编写规则来限制对数据库其他集合的不同写入、更新操作。

由于我在 React-Native 中使用 Firestore 数据库,因此我只在插入/更新时传递相应集合的文档信息。那么我该如何传递用户的角色信息,以便我的规则通过身份验证并且该数据不会进入其他集合。

描述上述场景的一个示例:

/collection1/document1
{
prop1: value1,
prop2: value2,
role: "WRITE"
}

/collection1/document2
{
prop1: value1,
prop2: value2,
role: "READ"
}

现在考虑当前登录的用户是 document2 .

我还有一个收藏:
/collection2/doc1
{
userRef: document1, //this is id of document1 from collection1
...
}

我想为 collection2 配置 firestore 规则,如果请求来自用户 role="WRITE"然后只允许它插入/更新文件。

已经阅读了很多文章和方法,但其中任何一篇都不能满足这个用例。

任何帮助,将不胜感激。

最佳答案

为了使规则更易于阅读,您可以创建一个获取用户角色的函数,然后在条件中使用。 firestore.rules是这样的文件看起来像:

service cloud.firestore {
match /databases/{database}/documents {
match /collection2/{doc} {
allow read: if getUserRole() === 'READ' || getUserRole() === 'WRITE';
allow create: if getUserRole() === 'WRITE';
allow update: if getUserRole() === 'WRITE';
}
function getUserRole() {
return get(/databases/$(database)/documents/collection1/$(request.auth.uid)).data.role;
}
}
}

关于firebase - 如何为 Firestore 规则身份验证(React-Native)传递额外的身份验证参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52919945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com