将管理员权限添加到firebase规则
我已经为用户设置了firebase规则,以便向数据库读取和写入数据。现在我想为管理员用户添加另一个规则 我允许用户通过auth.uid进行访问,并希望为管理员用户设置另一个级别 以下是我目前的规则:将管理员权限添加到firebase规则,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我已经为用户设置了firebase规则,以便向数据库读取和写入数据。现在我想为管理员用户添加另一个规则 我允许用户通过auth.uid进行访问,并希望为管理员用户设置另一个级别 以下是我目前的规则: { "rules": { "users": { "$uid": { ".read": "$uid === auth.uid", ".write": "$uid === auth.uid" } } } } 我通过url中
{
"rules": {
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
我通过url中的$uid获取数据,如下所示:
`https://blablabla.firebaseio.com/users/${uid}/places.json?auth=` + authToken
用户通过电子邮件和密码注册。是否有一种方法可以将特定用户添加为管理员并设置另一个规则来访问所有数据?我通常在规则中创建一个
isAdmin
函数,然后可以从任何地方调用该函数。以下是最近一个项目的示例:
function isAdmin(request) {
return request.auth.uid == "KqEizsqUQ6XMkUgLUpNxFnzLm4F3"
|| request.auth.uid == "zYXmog8ySOVRrSGVt9FHFr4wJb92"
|| (request.auth.token.email_verified && request.auth.token.email.matches(".*@google.com"))
;
}
因此,在这个项目中,管理员组由两个UID和任何使用验证过的Google电子邮件地址登录的人组成
现在,我可以在以下任何其他规则中使用此函数:
match /users/{uid} {
allow read: if true;
allow create: if request.auth.uid == uid;
allow delete: if isAdmin(request);
}
因此,任何人都可以阅读
用户
集合中的文档,每个用户都可以创建自己的用户文档,但只有管理员可以删除这些文档。这可能会有所帮助;另一种方法是将用户信息存储在Firestore
的role
字段中,并使用以下规则进行检查:。根据您的要求,您也可以这样做:“.read”:“auth.uid===specific uid”@AndréKool,我已经尝试过了,但仍然无法获得数据。“.read”:“auth.uid==‘specificUID’”,