2013-02-26 6 views

Odpowiedz

15

Najpierw należy rozpocząć uwierzytelnianie użytkowników za pomocą jednego z obsługiwanych mechanizmów uwierzytelniania Firebase. Więcej informacji o uwierzytelnianiu w Firebase można znaleźć pod adresem https://www.firebase.com/docs/security/authentication.html.

Po rozpoczęciu uwierzytelniania użytkowników, bezpieczne i zweryfikowane dane użytkowników będą dostępne dla Ciebie w regułach bezpieczeństwa za pomocą zmiennej auth. Załóżmy, że masz uwierzytelnionych użytkowników i każdy użytkownik ma unikalny identyfikator, dostępny przez auth.uid.

na obecność grupy dzielenia, polecam przechowywania danych za pomocą struktury, takie jak:

/groups/<group-id>/users/<user-id>/<presence-status>

Stosując tę ​​strukturę, można napisać zasad bezpieczeństwa, które sprawiają, że dane obecność prywatnych na całym świecie, podczas gdy użytkownik mógłby tylko przeglądać stan obecności każdego użytkownika w grupach, do których mają pozwolenie i edytować tylko stan własnego użytkownika. Oto przykładowy zestaw reguł bezpieczeństwa, który wymusza tych ograniczeń:

{ 
    "groups": { 
    "$groupid": { 
     // Users can view the presence state of users in this group if they 
     // are authenticated and listed in the group themselves. 
     ".read": "auth != null && data.child('users').hasChild(auth.uid)" 
     "users": { 
     "$userid": { 
      // Users can update only their individual account data. 
      ".write": "auth != null && $userid == auth.uid && newData.val() != null" 
     } 
     } 
    } 
    } 
} 

W powyższym przykładzie, tylko użytkownicy w /groups/<group-id>/users/ masz uprawnień, aby zobaczyć dane o obecności grupy, a każdy użytkownik może jedynie modyfikować swoje indywidualne dane. Użytkownik może czytać/zapisywać tylko do swojego indywidualnego węzła użytkownika.

Aby rozszerzyć to nieco dalej, załóżmy, że masz specjalną klasę użytkowników, którzy jako jedyni mogą tworzyć grupy. Podczas generowania tokenów uwierzytelniania można uwzględnić poziom uprawnień użytkownika (w poniższym przykładzie ustawimy wartość isAdmin=true) i przyznamy specjalny poziom dostępu przy użyciu zaktualizowanych reguł zabezpieczeń. Na przykład, jeśli tylko niektórzy użytkownicy mogą tworzyć grupy, można zaktualizować regułę .write w $ groupid tak, aby wyglądała następująco:

"$groupid": { 
    // Only admins can create new groups. 
    ".write": "auth != null && auth.isAdmin === true" 
    //... 
} 
+1

Czy istnieje przykład tego gdzieś. – Harry

+0

Działa dobrze. Dzięki ! – Shirane85

Powiązane problemy