我使用 auth.uid 来识别谁拥有记录。
例如。 {"所有者" :" facebook:100200"由用户100200拥有,使用Facebook进行身份验证。注意:uid前面有提供者名称" facebook"。
我有一条规则,检查只有所有者才能读取自己的数据。
问题是,如果符合规则,则规则失败:
"owner" : "facebook:100200" (has provider name)
如果成功:
"owner" : "100200" (no Provider name)
规则是:
{ ".read": "data.child('owner').val() == auth.uid" }
这是正确的行为吗?如果是这样,我应该在保存所有者详细信息之前剪切出提供商的详细信息(即" facebook")。我想知道我是否首先使用了错误的auth.uid。
以下是我获取 auth.uid 的方法。它附带提供者名称:
// logged-in
Auth.$onAuth(function(authData) {
console.log("Logged in as", authData.uid); // "facebook:100200"
}
解决 使用Firebase Simulator进行测试时,请记下自定义身份验证字段中的JSON。默认情况下,格式为{provider:' anonymous',uid:' 100200' }。即。 uid设置为100200
要使规则通过,我必须将Custom Auth中的值更改为{uid:' facebook:100200' }
END
非常感谢, 比默
答案 0 :(得分:0)
解决了它。我通过自定义身份验证在模拟器中进行测试。 Custom Auth值应设置为{uid:'facebook:100200'}。请勿使用{provider:'facebook',uid:'100200'}
提供的格式