【发布时间】:2017-07-17 03:27:00
【问题描述】:
我有一个非常简单的写入安全规则,应该只允许拥有经过验证的电子邮件的用户写入数据,
"someNode": {
".write": "auth.token.emailVerified === true"
}
由于某种原因,我仍然在具有特定用户令牌的模拟器和具有相同用户的应用程序中被拒绝许可。我仔细检查了客户端中的用户对象,它确实有emailVerified === true,因此我不确定为什么这不起作用。
【问题讨论】:
-
你能分享一个模拟器失败的截图吗?此屏幕截图应包含您在模拟器中指定的路径、规则、用户身份验证、失败和您正在编写的数据。
-
在客户端测试会更容易
-
@FrankvanPuffelen 补充说,我只能在模拟器中使用匿名身份验证,但是传递给它的 uid 令牌来自通过
Email/Password进行身份验证的测试用户,同一用户从实际客户端测试(不是模拟器) 收到相同规则的permission denied错误 -
模拟器不会读取用户的实际token。模拟安全规则时,只有您在模拟器中输入的有效负载可用。对于匿名帐户,这意味着您只能获得
provider和uid。 -
@FrankvanPuffelen 确实在模拟器中手动添加了有效负载,但是在客户端中仍然遇到问题,我收到
FIREBASE WARNING: set at /queue/create/tasks/-Kdvoc0u3OWz3_LTDku1 failed: permission_denied用于拥有emailVerified: true的用户,其中task指的是someNodein我的问题,将规则更改为auth !== null工作正常
标签: firebase firebase-realtime-database firebase-authentication firebase-security