【问题标题】:Firebase auth rules working for facebook provider but not email/pwdFirebase 身份验证规则适用于 facebook 提供商,但不适用于电子邮件/密码
【发布时间】:2016-10-20 09:39:16
【问题描述】:

我正在尝试在我的数据库上编写一些规则,以防止用户写入,除非他们通过“匿名”以外的提供者进行身份验证。这是我的规则,但由于某种原因,当我使用 facebook 但不是使用电子邮件/密码登录时,它可以工作;我收到权限被拒绝错误。 PS email/pwd 用户是在升级 SDK 之前创建的。任何想法为什么这不起作用?

  "updates": {
    ".read": "auth !== null",
    ".write": "auth !== null && auth.provider !== 'anonymous'",
    "$location_id": {
      ".indexOn": "validFrom",
      "$update_id": {
        ".validate": "newData.hasChildren(['displayName', 'place_id', 'name', 'statusValueId', 'update_id', 'user_id', 'validFrom', 'votes'])"
      }
    }
  },

【问题讨论】:

    标签: firebase angularfire firebase-security firebase-authentication


    【解决方案1】:

    检查为什么这不起作用的最佳方法是在 firebase 控制台中使用模拟器。

    您可以在数据库>规则>模拟器(右上角)中找到它

    1. 在单选按钮中选择写入
    2. 选择切换“已验证”,选择您要测试的提供程序并在“验证令牌有效负载”中写入您的用户令牌
    3. 在“位置”中写下您的参考路径
    4. 在“数据(JSON)”中粘贴您要编写的 JSON 对象
    5. 点击运行,firebase 会告诉你哪条规则失败了

    【讨论】:

    • ☃ 如果这不能完全回答问题,请包含模拟器的输出以帮助诊断。
    【解决方案2】:

    我怀疑您遇到了与我相同的错误,其中auth.provider 等于anonymous 用于电子邮件/密码身份验证,而不是password。遗憾的是,我还没有收到 Firebase 团队的答复。

    auth.provider is not set to 'password' when user signs-in with email and password

    更新:我在 Firebase 的 Google 群组页面中获得了一些很大的帮助。他们确认了该错误并提供了解决方法。请参阅以下链接:

    https://groups.google.com/d/topic/firebase-talk/C-ljg-CCKl0/discussion

    【讨论】:

    • 我相信我们确实有完全相同的问题
    猜你喜欢
    • 2018-04-25
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多