【问题标题】:I want to know if the firebase rules are writable or not from the client side我想知道firebase规则是否可以从客户端写入
【发布时间】:2020-09-26 02:30:44
【问题描述】:

我正在通过练习 firebase 快速启动程序来修改它。

[FriendlyChat]

我已经用这种方式重写了规则和数据。

数据

{"admin-users" : 
 {
      "my-uid" : true
 },
 "messages" : 
 {
       "-ABCD" : {
         "name" : "Mary",
         "text" : "Hi"
  },
  "-K2ib4H77rj0LYewF7dP" : {
         "name" : "anonymous",
         "text" : "Hello"
  },
  "-K2ib5JHRbbL0NrztUfO" : {
         "name" : "anonymous",
         "text" : "how are you"
  }
 }
}

规则

{
   "rules": { ".read": "auth !
      ".read": "auth ! = null",
      ".write": "root.child('admin-users').child( auth.uid).exists()",
   }
}

我已成功禁用除“my-uid”之外的所有内容,但我无法弄清楚如何引用它,所以我得到了一个文本框和一个“发送”按钮,等等。你会被丢在尘土里。 有没有办法从客户端引用它?请。

【问题讨论】:

    标签: java firebase firebase-realtime-database firebase-security


    【解决方案1】:

    自行解决。谢谢。 我在 MainActivity.java 的第 29 行添加了以下源代码

        DatabaseReference myRef;
        FirebaseDatabase database;
        ValueEventListener vel;
    
        database = FirebaseDatabase.getInstance();
        myRef = database.getReference("/admin-users");
    
        vel = new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot snapshot) {
    
                boolean approval=false;
                mSendButton = (Button) findViewById(R.id.sendButton);
                mMessageEditText = (EditText) findViewById(R.id.messageEditText);
                mAddMessageImageView = (ImageView) findViewById(R.id.addMessageImageView);
                mFirebaseUser = mFirebaseAuth.getCurrentUser();
                for(DataSnapshot dataSnapshot : snapshot.getChildren())
                {
    
    if(!mFirebaseUser.getUid().toString().equals(dataSnapshot.getKey()))continue;
    
                    approval=true;
                    break;
                }
                if(approval)
                {
                    mMessageEditText.setEnabled(true);
                    mMessageEditText.setVisibility(View.VISIBLE);
                    mSendButton.setVisibility(View.VISIBLE);
                    mAddMessageImageView.setEnabled(true);
                    mAddMessageImageView.setVisibility(View.VISIBLE);
                }
                else
                {
                    mSendButton.setEnabled(false);
                    mMessageEditText.setEnabled(false);
                    mAddMessageImageView.setEnabled(false);
                    mMessageEditText.setVisibility(View.INVISIBLE);
                    mSendButton.setVisibility(View.INVISIBLE);
                    mAddMessageImageView.setVisibility(View.INVISIBLE);
                }
            }
    
            @Override
            public void onCancelled(DatabaseError databaseError) {
    
            }
        };
        myRef.addListenerForSingleValueEvent(vel);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-05
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      • 2015-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多