如何为特定电子邮件域设置Firebase实时数据库安全规则并允许对多个父节点进行读写

如何为特定电子邮件域设置Firebase实时数据库安全规则并允许对多个父节点进行读写,firebase,firebase-realtime-database,firebase-authentication,Firebase,Firebase Realtime Database,Firebase Authentication,如何设置Firebase实时数据库结构的安全规则,如下所示: users: { ... ... ... }, books: { ... ... ... }, sales: { ... ... ... } 条件:Firebase auth设置为电子邮件/密码,只有以域[mydomain.co.in]结尾的电子邮件登录的用户才能读取或写入父节点。不使用自定义声明 添加以下安全规则仅适用于第一个父节点[用户],不适用于所有用户,这里有什么遗漏 { "rules": {

如何设置Firebase实时数据库结构的安全规则,如下所示:

users: {
...
...
...
},
books: {
...
...
...
},
sales: {
...
...
...
}
条件:Firebase auth设置为电子邮件/密码,只有以域[mydomain.co.in]结尾的电子邮件登录的用户才能读取或写入父节点。不使用自定义声明

添加以下安全规则仅适用于第一个父节点[用户],不适用于所有用户,这里有什么遗漏

{
  "rules": {
    ".read": false,
    ".write": false,
    "users": {
      ".read": "auth.token.email.matches(/.*@mydomain.co.in$/)",
      ".write": "auth.token.email.matches(/.*@mydomain.co.in$/)",
      ".indexOn": "name"
    },
      
    "books": {
      ".read": "auth.token.email.matches(/.*@mydomain.co.in$/)",
      ".write": "auth.token.email.matches(/.*@mydomain.co.in$/)",
      ".indexOn": "title"
    },
    "sales": {
      ".read": "auth.token.email.matches(/.*@mydomain.co.in$/)",
      ".write": "auth.token.email.matches(/.*@mydomain.co.in$/)",
      ".indexOn": "price"
    },
  }
  
}

是否尝试在uid字段中包含以下内容? 参考文献


相同的代码适用于auth.token.email.matches(/.*@mydomain.co.in$/)

验证令牌有效负载

{
  "token":{
     "email": "test@mydomain.co.in"
  }
}


错误错误:权限\u在/books被拒绝:客户端没有访问所需数据的权限。错误错误:权限\u在/sales被拒绝:客户端没有访问所需数据的权限。抱歉,请尝试一下,上面的代码不适用于我。或者尝试firebase规则模拟器。对于阻止对黑客的完全访问所需的“删除顶级读写规则”,相同的代码适用于auth.token.email.matches(/.*@mydomain.co.in$/)
{
  "token":{
     "email": "test@mydomain.co.in"
  }
}