2017-12-21 22 views
-1

채팅에 참여하기 위해 올바른 비밀번호를 입력했는지 확인하는 방법.Firebase - 비밀번호로 안전하게 채팅하기

이 접근법은 적절하게 부적절합니다. 이 코드는 내가 성취하고자하는 것을 보여주기위한 것이지만 전혀 작동하지 않습니다.

val ref = FirebaseDatabase.getInstance().getReference("chats") 

ref.child(chatName).child("password").equalTo(password).addListenerForSingleValueEvent( 
    override fun onDataChange(snapshot: DataSnapshot) { 
     Log.d(TAG, snapshot.toString()) 
     // if there is data the password was right 
    } 
    .... 
) 

이 전체 비밀번호 채팅 시스템과 채팅을 안전하게 수행하려면 어떻게해야합니까? 어떤 종류의 규칙을 데이터베이스에 설정해야합니까?

뿌리 전화로 firebase 쿼리를 변경하고 클라이언트와 서버간에 전송되는 데이터를 볼 수 있습니까?

답변

1

각 채팅방을 암호로 보호하려면 한 가지 방법은 해당 암호를 채팅방 경로에 삽입하는 것입니다. 그래서 예를 들면 :

chats: { 
    roomId1: { 
    secret: { 
     chat11: ... 
     chat12: ... 
    } 
    } 
    roomId2: { 
    correcthorsebatterystaple: { 
     chat21: ... 
     chat22: ... 
    } 
    } 

다음과 같은 규칙이 구조를 고정 :

{ 
    "rules": { 
    ".read": false, 
    "chats": { 
     "$roomId": { 
     "$password: { 
      ".read": true 
     } 
     } 
    } 
    } 
} 

를이 구조, 아무도 객실의 목록 또는 특정 방을 읽을 수 있습니다. 읽을 수 있으려면 을 알고 있어야합니다. 해당 객실의 객실 ID와 암호가 모두 일치해야합니다.

+0

암호를 변경하는 방법은 무엇입니까? – Metu

+0

이 모델을 사용하면 암호를 변경하려는 경우 모든 메시지를 이동해야합니다. 분기를 이동하거나 이름을 변경하는 작업이 없으므로 여기에 복사해야합니다. https://stackoverflow.com/questions/39107274/is-it-possible-to-rename-a-key-in-the-firebase-realtime-database –

+0

을 참조하십시오. 그런 다음이 작업을 수행 할 다른 방법을 찾고 있습니다. 고마워. – Metu