只是一个简单的问题:这是错误的,为什么这不起作用?
尝试与用户部分中具有"admin"角色的用户访问/ titles/{anyTitle},但仍然可以访问
权限丢失或不足.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow write: if false;
allow read: if false;
}
function userCanWrite () {
return get(/databases/{database}/documents/users/$(request.auth.uid)).data.role == "admin";
}
match /titles/{anyTitle=**} {
allow read: if request.auth != null;
allow write: if userCanWrite();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我从官方文件中尝试了另一条规则
get(/databases/{database}/documents/users/$(request.auth.uid??)).data.isAdmin == true;
这也不行
支持帮助我找到解决方案,这是你应该做的:
数据库结构:
用户 - > {{userid}} - > {role:"admin"}
数据库规则设置:
get(usersPath/$(request.auth.uid)).role =="admin"|| get(usersPath/$(request.auth.uid)).data.role =="admin";