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