auth.uid 的 Firebase 规则
Firebase Rule for auth.uid
我使用auth.uid来识别谁拥有记录。
例如。 { "owner" : "facebook:100200" } 由使用 Facebook 进行身份验证的用户 100200 所有。注意: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 模拟器进行测试时,请注意 Custom Auth 字段中的 JSON。默认情况下,格式为 { provider: 'anonymous', uid: '100200' }。 IE。 uid 设置为 100200
为了让规则通过,我必须将 Custom Auth 中的值更改为 { uid: 'facebook:100200' }
结束
非常感谢,
比默
解决了。我正在通过自定义身份验证在模拟器中进行测试。自定义身份验证值应设置为 { uid: 'facebook:100200' }。不要使用提供的格式 { provider: 'facebook', uid: '100200' }
我使用auth.uid来识别谁拥有记录。
例如。 { "owner" : "facebook:100200" } 由使用 Facebook 进行身份验证的用户 100200 所有。注意: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 模拟器进行测试时,请注意 Custom Auth 字段中的 JSON。默认情况下,格式为 { provider: 'anonymous', uid: '100200' }。 IE。 uid 设置为 100200
为了让规则通过,我必须将 Custom Auth 中的值更改为 { uid: 'facebook:100200' }
结束
非常感谢, 比默
解决了。我正在通过自定义身份验证在模拟器中进行测试。自定义身份验证值应设置为 { uid: 'facebook:100200' }。不要使用提供的格式 { provider: 'facebook', uid: '100200' }