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' }