相关疑难解决方法(0)

Firestore安全规则get()不起作用

解决方案是在帖子的最后.看看这个.

Решениепроблемывконцепоста.Дочитайте.

只是一个简单的问题:这是错误的,为什么这不起作用?

尝试与用户部分中具有"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)

这是我的数据库结构

PS

我从官方文件中尝试了另一条规则 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";

firebase firebase-security google-cloud-firestore

11
推荐指数
3
解决办法
4834
查看次数