Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在firebase中,客户端在获得拒绝权限时是否知道原因?_Firebase_Firebase Realtime Database_Firebase Security - Fatal编程技术网

在firebase中,客户端在获得拒绝权限时是否知道原因?

在firebase中,客户端在获得拒绝权限时是否知道原因?,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,Firebase使用规则来保护和验证数据。当客户端试图保存一些无效数据时,客户端只会收到一个[PERMISSION DENY]错误,而没有任何额外信息。这给应用程序显示正确的消息、引导用户修复数据带来了不便 在获得权限拒绝时,客户端是否有任何方式可以接收任何额外信息 更新: 例如,假设每个用户都有一个保存在Firebase数据库中的简单配置文件,如下所示: data +- userProfile +- $uid +- name: Alex +- message:

Firebase使用规则来保护和验证数据。当客户端试图保存一些无效数据时,客户端只会收到一个[PERMISSION DENY]错误,而没有任何额外信息。这给应用程序显示正确的消息、引导用户修复数据带来了不便

在获得权限拒绝时,客户端是否有任何方式可以接收任何额外信息


更新: 例如,假设每个用户都有一个保存在Firebase数据库中的简单配置文件,如下所示:

data
+- userProfile
   +- $uid
      +- name: Alex
      +- message: "Hi, everybody!"
      +- updatedAt: 1484406052268
"$uid":{
  ".validate": "newData.hasChildren(['name', 'message', 'updatedAt'])",
  "name":{
    ".validate": "newData.isString() && newData.val().length <= 30"
  },
  "message":{
    ".validate": "newData.isString() && newData.val().length <= 72"
  },
  "updatedAt":{
    ".validate": "newData.val() < now"
  }
}      
用户Alex可以更改他的短消息,我的应用程序应该尝试将消息保存为
message
,并将
updatedAt
设置为当前时间

另一方面,安全规则看起来是这样的:

data
+- userProfile
   +- $uid
      +- name: Alex
      +- message: "Hi, everybody!"
      +- updatedAt: 1484406052268
"$uid":{
  ".validate": "newData.hasChildren(['name', 'message', 'updatedAt'])",
  "name":{
    ".validate": "newData.isString() && newData.val().length <= 30"
  },
  "message":{
    ".validate": "newData.isString() && newData.val().length <= 72"
  },
  "updatedAt":{
    ".validate": "newData.val() < now"
  }
}      
“$uid”:{
“.validate”:“newData.haschilds(['name'、'message'、'updatedAt'])”,
“姓名”:{

.validate:“newData.isString()&&newData.val().length错误是在代码中处理的,因此在不了解您的用例或不查看代码的情况下,不可能提供准确的答案。有关安全规则失败的信息不会从数据库服务器传递到客户端。为了给您的用户更好的错误消息,您也应该在客户端验证数据。请参阅,并感谢@FrankvanPuffe伦恩!