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"
//...
}
fonte
2013-02-26 00:25:26
C'è un esempio di questo da qualche parte. – Harry
Funziona bene. Grazie ! – Shirane85