2017-09-17 7 views
0

我的Firebase数据库中有几个位置需要在用户通过身份验证之前进行阅读,但我不希望允许公众阅读位置。所以,我在考虑是否可以让客户在阅读过程中提供一个可以在验证规则中检查以允许阅读的秘密。如果客户在Firebase中提供了一个秘密,是否可以允许在某个位置进行阅读

这在写作过程中绝对可行,我可以随着要写入的数据一起发送一个秘密,并且验证规则可以检查要写入的数据是否也包含正确的秘密。事情是这样的

 // Following rule will also writing to locA if the client is either authenticated or presents the app secret 
     "locA" : { 
      ".write": "auth !== null || newData.child('appSecret').val() == 'app_secret'" 
     } 

我想知道是否有可能阅读并不允许大众阅读为需要认证前,读取位置时遵循类似的模式。

回答

0

当然这是可能的。您可以在".read"规则中使用相同的语法。您可以使用data.child(whatever)root.child('whatever/whatever')。根常量链接到数据库的根目录。

+0

我不明白你的答案。我想你建议我已经在可以在读取操作中检查的位置有'app_secret'。我试图弄清楚的是在读取操作期间提供'app_secret'的方法,并且不会将它存在于数据库中,因为这与根本不具有'app_secret'具有相同的效果。例如,目前,一个位置可以像'rootRef.child('locA')。once('value')。然后(快照=> {})一样读取。'我可以在阅读时提供'app_secret',以便客户端可以仅当它具有'app_secret'时才读取locA –

相关问题