首页 文章

如何避免用户在Firebase中编写特定信息?

提问于
浏览
0

我有这个场景,我们有一个userA访问另一个userB的 Profiles ,他点击了关注 . 一旦他跟随userB,我们希望他写信给Firebase并添加到userB的粉丝:{userA:true} ...查看规则我明白我们可以验证用户,但是我们如何确认一旦他被认证他只能写入userB的关注者只有他的userId - 作为userA而不篡改数据并且可能编写userC .

身份验证是否为我们提供了userA,我们可以确保write只能等于userId的auth.userA,还是随机生成的,与我们一般用户使用的主userId不一样?

另外,如果可以从他们的文档访问auth.userId,我们还可以调用auth.username来获取经过身份验证的用户名,以确保他们不会在用户名之外写一些东西吗?

以下是数据结构的示例:

以下用户名userid日期

我试图让用户只能将他们的userId和用户名写入以下内容 .

Map<String, Object> payload = new HashMap<String, Object>();
payload.put("uid", "uniqueId1");
payload.put("some", "arbitrary");
payload.put("data", "here");
TokenGenerator tokenGenerator = new TokenGenerator("<YOUR_FIREBASE_SECRET>");
String token = tokenGenerator.createToken(payload);

它必须是“数据”还是“用户名”,“测试者”?

1 回答

  • 1

    所以听起来你想要这个结构:

    followers
       <uid>
         <follower_uid>: true
    

    并且您希望仅允许具有 follower_uid 的用户写入值 .

    这可以使用以下安全规则来完成 .

    {
      "rules": {
        "followers": {
          "$uid": {
            "$follower_uid": {
              ".write": "auth.uid == $follower_uid"
            }
          }
        }
      }
    }
    

    我建议你阅读Firebase documentation on security rules,它涵盖了这个以及更多场景 . 这是一个阅读,但值得花时间 .

相关问题