如何将 Firebase 数据库规则设置为仅允许将数据写入经过身份验证且未禁用的帐户

问题描述 投票:0回答:1

我目前正在在线编写一个聊天应用程序,我希望能够随时随地禁用帐户。一旦我禁用该帐户,如果用户要发送消息,目前他们就可以发送消息。我希望它只允许经过身份验证的用户和非禁用用户写入数据。

我目前的代码为:

rules_version = '2';

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

我尝试过使用以下方法:

rules_version = '2';

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if auth.token.email_verified == true && auth.token.email.matches(/.*@gmail.com);
    }
  }
}

并尝试过这个...

rules_version = '2';

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth == auth.uid;
    }
  }
}

我不确定需要在规则文件中放置什么,以便只有经过身份验证且未禁用的帐户才能写入新消息。

因此,在 Firebase 数据库中,需要更改规则文件,以仅允许经过身份验证且未禁用的用户允许写入数据(又名:发送消息)。

感谢所有看到此消息并试图提供帮助的人!

firebase
1个回答
0
投票

Firebase 安全规则可以访问用户 ID 令牌中存在的所有信息。禁用帐户(在 Firebase 控制台或通过 API)会导致无法为该帐户创建新的 ID 令牌,但不会更改现有 ID 令牌的任何内容(创建后无法修改)。

如果您希望能够立即禁用访问,则需要使用另一种机制。有关“检测 ID 令牌撤销”的文档显示了一种这样的机制,该机制在安全规则可以访问的某些辅助数据源中跟踪已禁用用户帐户的 UID。该文档使用实时数据库,但使用 Firestore 也可以。

© www.soinside.com 2019 - 2024. All rights reserved.