2013-02-26 5 views

risposta

15

Innanzitutto, è necessario iniziare l'autenticazione degli utenti utilizzando uno dei meccanismi di autenticazione Firebase supportati. Ulteriori informazioni sull'autenticazione in Firebase sono disponibili al https://www.firebase.com/docs/security/authentication.html.

Dopo aver avviato l'autenticazione degli utenti, i dati utente sicuri e verificati dell'utente saranno disponibili nelle regole di sicurezza tramite la variabile auth. Supponiamo che tu abbia utenti autenticati e ogni utente abbia un ID univoco, accessibile tramite auth.uid.

Per presenza gruppo di condivisione, consiglio l'archiviazione dei dati utilizzando una struttura come:

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

Usando questa struttura, si potrebbe scrivere regole di sicurezza che renderebbero dati di presenza a livello globale privato, mentre l'utente poteva solo visualizzare lo stato di presenza per ciascun utente nei gruppi a cui è consentito e modificare solo lo stato del proprio utente. Ecco una serie di regole di sicurezza esempio che applica queste restrizioni:

{ 
    "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" 
     } 
     } 
    } 
    } 
} 

Nell'esempio sopra, solo gli utenti in /groups/<group-id>/users/ hanno il permesso di vedere i dati di presenza per il gruppo, e ogni utente può modificare solo i propri dati individuali. L'utente può leggere/scrivere solo sul proprio nodo utente.

Per estendere un po 'di più, diciamo che hai una classe speciale di utenti che sono gli unici autorizzati a creare gruppi. È possibile includere il livello di autorizzazione dell'utente durante la generazione dei token di autenticazione (per l'esempio di seguito, imposteremo isAdmin=true) e garantiremo tale livello speciale di accesso utilizzando le regole di sicurezza aggiornate. Ad esempio, se solo alcuni utenti possono creare gruppi, è possibile aggiornare la regola .write in $ groupid in modo che assomigli:

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

C'è un esempio di questo da qualche parte. – Harry

+0

Funziona bene. Grazie ! – Shirane85