当前位置: 首页 > 面试题库 >

邮件阵列的Firebase安全规则

鲍飞星
2023-03-14
问题内容

我试图显示基于收件人的邮件列表,但现在让我们保持简单。我只是想显示消息列表。

我的规则看起来像这样

{
"rules": {
  "communications" : {
    "$communication":{
      ".read" : true,
      ".write": true
    }
  }
}

但是由于某种原因,我的应用程序不想读取它

fireRef = new Firebase(url);
fireRef.auth(MY_TOKEN);
commsRef = fireRef.child('communications')
$scope.communications = $firebase(commsRef)

只有在我有一条规则看起来像

{
"rules": {
  "communications" : {
    ".read" : true,
    ".write": true
  }
}

但这会引起问题,因为我想在通讯的子节点上添加条件。就像是:

{
"rules": {
  "communications" : {
    ".read" : true, ### I would like to get rid of this line as well and have the child handling it
    ".write": true,

    "$communication":{
      ".read" : "data.child('to').val() == auth.uid"
    }
  }
}

我假设这是因为我在通讯上有一个$ firebase,它需要一些读或写规则,但是添加新消息后如何获取事件?

谢谢


问题答案:

关于安全规则,Firebase操作是全有或全无。

这意味着发送到客户端的数据列表将永远不会是不完整的,也不是完整服务器数据的 过滤
视图。因此/communications,即使您确实有权按照子规则在读取其中的某些数据,使用第一组安全规则尝试在处加载所有数据也会失败/communications/$communication

要处理此用例,请考虑重组您的数据,以使每个通信都按收件人进行索引,即/communications/$recipient/$communication,这将简化您的安全规则。

此外,您甚至可以使该存储桶由收件人(即.read: auth.id == $recipient)设为只读,同时允许任何人向该用户发送消息(即.write: auth != null && !data.exists())。最后一条规则可确保发送方的客户端经过身份验证并写入不存在的位置,例如新的推送ID。



 类似资料:
  • 我试图为我的云还原设置安全规则,但我对规则应该应用于哪个数据库感到困惑。 我目前使用的唯一功能是记录Firebase事件。安全规则是否适用于Firebase事件?如果是,应该为哪个数据库编写规则?如果没有,我是否可以拒绝对所有事件的读/写访问,并且事件仍将被记录并发送到BigQuery?

  • 我最近收到一封来自Firebase的电子邮件,告诉我我的数据库(FiRest)的规则不安全,所以我将它们更改为以下内容: 在我有这些规则之前: 在做出改变后,电子邮件不断地回来,我不知道还能做什么。我已经尝试了以下链接中给出的几个选项,但它们都不能满足我的需要。 https://firebase.google.com/docs/rules/insecure-rules#firestore 我需要授

  • 简单介绍一下,我正在尝试了解Firebase安全协议,我已经建立了一个名为UsersDB的数据库,该数据库将根据身份验证存储详细信息。uid。详细信息包括全名、电子邮件、提供商、帐户创建日期、上次登录日期。 我设置了如下规则: 我的理解是,记录只能由user_id符合auth.uid.的人读写 我的问题是我做得对吗?如果不对,我应该如何实现这一目标?我只希望创建帐户的人能够读写这个,而没有其他ui

  • 拒绝许可。无法访问存储桶..请访问Firebase控制台中的Storage选项卡,为您的存储桶启用Firebase存储,并确保您有足够的权限来正确提供资源 在谷歌搜索如何设置这些安全规则,我不确定什么是正确的答案。一些答案建议我在代码中编写方法来授予权限,但文档建议我需要在Firebase的端进行。 这是其中一个例子 我无法理解人们的回答 就像几个月前的这张 有人能解释一下当前的Firebase(

  • 我想借用几年前提出的一个问题,因为我有相同的规则Firebase电子邮件说我的实时数据库有不安全的规则 除电子邮件/密码外,所有登录方法都被禁用 我只有一个电子邮件/密码帐户 我不允许任何人登录-没有GUI登录 我的Firebase还能做什么呢?谢谢

  • 我最近收到一封来自Firebase的电子邮件,告诉我我的实时数据库有不安全的规则。这些是我设置的规则: 这不是一条安全规则吗? 电子邮件/密码是我启用的唯一登录方法。