auth.uid的Firebase规则

时间:2016-02-01 12:07:59

标签: firebase angularfire

我使用 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

非常感谢, 比默

1 个答案:

答案 0 :(得分:0)

解决了它。我通过自定义身份验证在模拟器中进行测试。 Custom Auth值应设置为{uid:'facebook:100200'}。请勿使用{provider:'facebook',uid:'100200'}

提供的格式