2016-03-22 6 views
1

Ich versuche, den autorisierten aktuellen Benutzer lesen und schreiben zu seinen eigenen Daten in der Firebase-Datenbank. Meine Sicherheitsdaten wie folgt aussehen:Firebase Set Sicherheit und Regeln für den aktuellen Benutzer

{ 
    "features" : { 
    "-KDUBJIPwvLCK-1lV4bM" : { 
     "e1fd0ccb-370a-4a6f-86af-87fdf97d25a0" : "een" 
    }, 
    "-KDUBLUr6K_PMxWkgcof" : { 
     "e1fd0ccb-370a-4a6f-86af-87fdf97d25a0" : "twee" 
    } 
    }, 
    "users" : { 
    "e1fd0ccb-370a-4a6f-86af-87fdf97d25a0" : { 
     "email" : "[email protected]", 
     "image" : "iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAAAXNSR0IArs4c6QAA\r\nABxpRE9UAAAA", 
     "name" : "tjalling dijkstra", 
     "telephone number" : "06580055" 
    } 
    } 
} 

-KDUBJIPwvLCK-1lV4bM ein AutoID von childByAutoId() Methode

e1fd0ccb-370a-4a6f-86af-87fdf97d25a0 ist eine uid (eindeutige Benutzer-ID) bekommen ist.

een ist der Wert einer bestimmten Funktion.

Meine Sicherheitsregeln sind:

{ 
    "rules": { 
    "users": { 
     "$uid": { 
     ".read": "auth != null && auth.uid == $uid", 
     ".write": "auth != null && auth.uid == $uid" 
     } 
    }, 
    "features": { 
     "$autoId" : { 
     "$uid": { 
     ".read": "auth != null && auth.uid == $uid", 
     ".write": "auth != null && auth.uid == $uid" 
     } 
    } 
    } 
} 
} 

Wenn ich Firebase Regeln wie diese schreiben, die Erlaubnis zu setValue() auf der Funktionen Teil verweigert.

2016-03-22 17: 51: 27,077 Herodus [884: 228445] [Firebase] setValue: oder removeValue: at/Funktionen/-KDUEEZ4z-FCAoUci-RW- fehlgeschlagen: PERMISSION_DENIED.

ist ein neues Feature mit dieser Code-Snippet hinzugefügt:

let featureContents = addFeatureTextField.text 
if featureContents != "" { 
    let newFeature: String = featureContents! 
    let featureDict = [ uid: newFeature] 
    let ref = DataService.dataService.FEATURE_REF.childByAutoId() 
    ref.setValue(featureDict) 

Jemand, jede Ahnung, was ich hier falsch mache?

+1

Sie haben ein Bild des JSON-Baums und der Sicherheitsregeln in Ihre Frage eingefügt. Bitte ersetzen Sie dies durch die tatsächlichen JSON- und Sicherheitsregeln als Text. Sie können den JSON einfach abrufen, indem Sie in der Firebase-Datenbank auf die Schaltfläche "Exportieren" klicken. Wenn der JSON und die Sicherheitsregeln als Text durchsuchbar gemacht werden, können wir sie einfach verwenden, um mit Ihren tatsächlichen Daten zu testen und sie in unserer Antwort zu verwenden, und im Allgemeinen ist dies nur eine gute Sache. –

+0

Es gibt einen [edit] (http://stackoverflow.com/posts/36161137/edit) Link direkt unter Ihrer Frage, mit dem Sie ihn in Ihre Frage einfügen können. –

+0

Hoffe du kannst mir zur Antwort helfen Frank, als Ingenieur bei Firebase ;-) –

Antwort

1

Sie zu diesem Pfad zu schreiben:

/features/-KDUEEZ4z-FCAoUci-rW 

Ihre Regeln nur Schreibrechte auf diesem Weg geben:

/features/$autoId/$uid 

Sie werden wie die Daten mit etwas schreiben wollen:

ref.childByAppendingPath(authData.uid).setValue(featureDict)