2016-10-05 8 views
-1

Ich versuche, Firebase-Regeln zum ersten Mal einzurichten. Ich möchte den Zugriff auf angemeldete Benutzer beschränken, damit sie nur auf ihre Daten zugreifen können. Ihre eigenen Daten sind unter users und usercontacts. Jeder kann auf die contactmessages Route schreiben und niemand kann lesen.Sichern von Firebase-Daten

Erfüllt dieses Regelwerk das, was ich von ihm erwarte? Ich habe es im Simulator versucht und einen simulated write denied Fehler bekommen. Ich könnte am Simulator etwas falsch machen.

{ 
    "rules": { 
    "users": { 
     "$user_id": { 
     // grants read/write access to the owner of this user account 
     // whose uid must exactly match the key ($user_id) 
     ".write": "$user_id === auth.uid", 
     ".read": "$user_id === auth.uid" 
     } 
    }, 
    "usercontacts":{ 
     "$user_id": { 
       ".write": "$user_id === auth.uid", 
       ".read": "$user_id === auth.uid" 
     } 
    }, 
    "contactmessages": { 
     ".read" : false, 
     ".write" : "$user_id === auth.uid" 
    } 
    } 
} 
+0

Können Sie bearbeiten Ihre Frage um die Schreiboperation einzuschließen, die du versuchst, scheitert das? Also der vollständige Pfad, an den Sie schreiben, die aktive UID (falls vorhanden), die Daten, die Sie schreiben, und die vorhandenen Daten (die für die write + -Regeln relevant sind). –

Antwort

0

Das Problem ist hier mit Ihrem letzten Schreibregel lautet:

"contactmessages": { 
    ".read" : false, 
    ".write" : "$user_id === auth.uid" 
} 

Sie $ user_id verwenden, aber es gibt keine User_id $ zu verweisen. Stattdessen sollten Sie diese Regel verwenden, wenn Sie jemand will hier schreiben können:

".write" : true 

Oder diese Regel, wenn Sie jeden authentifizierten Benutzer in der Lage sein, schreiben:

".write" : "auth != null" 
0

Versuchen Sie, diese

{ 
    "rules": { 
    "users": { 
     "$userId":{ 
      ".read": "(auth != null) && ($userId === auth.uid)", 
      ".write": "(auth != null) && ($userId === auth.uid)" 
     } 
    }, 
    "usercontacts": { 
     "$userId": { 
       ".read": "(auth != null) && ($userId === auth.uid)", 
       ".write": "(auth != null) && ($userId === auth.uid)" 
     } 
     }, 
     "contactmessages": { 
     "$userId": { 
       ".read": "(auth != null) && ($userId === auth.uid)", 
       ".write": "(auth != null) && ($userId === auth.uid)" 
     } 
     } 
    } 
}