Sie können dies in Firebase tun.
Es sei Teil des DB ist wie angelegt:
/chatRooms/$roomID/password = $PASSWORD
Lese-/Schreibberechtigung für /chatRooms/$roomID/password
in den Chatroom Besitzer gewährt wird. chatRooms/$roomId/users/$userId
mit folgenden Validierung:
Um Mitglied einer Chatroom zu werden, müssen Sie ein Dokument hinzufügen
Der userId Eintritt der aktuelle Benutzer sein muss, und das Passwortfeld das Kennwort gleich muss. Eine Verifikationsregel kann auf ALLE Daten in der Datenbank zugreifen, selbst wenn der Benutzer nicht auf die Daten zugreifen kann.
Unten ist ein (ungetestetes) Beispiel, das die grundlegenden Prinzipien zeigt.
Kurz:
- nur die Chatroom Admin das Passwort festlegen. Niemand darf es lesen.
- Chat-Daten können von einem Benutzer gelesen werden, wenn ihre uid in den Mitgliedern Sammlung
- sind ein Mitglied der Sammlung hinzuzufügen, müssen sie ein Passwort, gleich (zu der Zeit) das Zimmer Passwort
schreiben
code:
"chatrooms" : {
"$room_id" : {
"chat data" : {
".read" : "root.child('/chattrooms/' + $room_id + '/members/' + auth.uid).exists()"
},
"password": {
".read": "false",
".write": "root.child('/chattrooms/' + $room_id).child('admin').val() == auth.uid"
},
"members" : {
"$user_id" : {
".validate": "$user_id == auth.uid && newData.val() == root.child('/chattrooms/' + $room_id + '/password').val()"
}
}
}
}
Es klingt wie eine vernünftige Lösung. Aber könnten Sie etwas mehr dazu sagen: "Die userID des Eintrags muss der aktuelle Benutzer sein, und das Passwortfeld muss dem Passwort entsprechen. Eine Verifikationsregel kann auf ALLE Daten in der Datenbank zugreifen, auch wenn der Benutzer nicht auf die Daten zugreifen kann. " Sollte ich ein Passwort schreiben wenn ein Benutzer an? chatRooms/$ roomId/users/$ userId Ich bin neu in Firebase-Regeln. –
> und das Passwortfeld muss dem Passwort entsprechen. Das Passwortfeld muss mit welchem Passwort übereinstimmen?Wie stellen wir es zur Verfügung, ohne es tatsächlich in die Datenbank zu schreiben? –
@DaniilAndreyevichBaunov Die Dokumente erklären es hier. https://firebase.google.com/docs/database/security/ Wenn Sie sie lesen, werden Sie verstehen. Der Benutzer muss versuchen, sich selbst in die Sammlung "/ users" zu schreiben. Wenn sie Erfolg haben, müssen sie das Passwort kennen. – z5h