2017-11-20 1 views
0

Also sende ich mein Token an den Server, aber etwas stimmt nicht. Ich ging, um meine Berechtigungen auf Firebase-Simulator zu testen und fand heraus, dass die .validate Zeile mir sagt, dass es falsch ist. Hier ist meine SicherheitsregelnFirebase Security Berechtigungen, die angeben, dass ein String keine Zeichenkette ist, während isString verwendet wird

{ 
    "rules":{ 
     "tokens":{ 
     "users":{ 
       "$uid":{ 
        ".read":"auth !== null && auth.uid === $uid", 
        ".validate":"newData.isString()", // wrong here. idk why 
        ".write":"auth !== null && $uid === auth.uid && (!data.exists() || newData.val() !== data.val())" 
       } 
      } 
     } 
    } 
} 

Struktur Daten:

root 
    |- tokens 
     |- users 
      |- uid:token_value 

Meine Eingang sind wie folgt:

Simulation Typ: schreiben

Ort:/Token/users/hA4hZrBieISwMOZaMYe7m6K5tpI3

Daten (JSON):

{ 
    "hA4hZrBieISwMOZaMYe7m6K5tpI3": "hi" 
} 

authentifizierte: Wahre

Anbieter: Google

UID: hA4hZrBieISwMOZaMYe7m6K5tpI3

Problem ist die "hi" im Daten (JSON) wird als Nicht-String-Wert bezeichnet Ue. Irgendwelche Ideen warum?

Antwort

0

Die neuen Daten, die Sie /tokens/users/hA4hZrBieISwMOZaMYe7m6K5tpI3 zu schreiben sind, ist kein String, es ist ein JSON-Objekt:

{ 
    "hA4hZrBieISwMOZaMYe7m6K5tpI3": "hi" 
} 

Um zu überprüfen, hA4hZrBieISwMOZaMYe7m6K5tpI3 ein String-Wert ist:

{ 
    "rules":{ 
     "tokens":{ 
      "users":{ 
       "$uid":{ 
        ".read":"auth !== null && auth.uid === $uid", 
        "$key": { 
        ".validate":"newData.isString()" 
        }, 
        ".write":"auth !== null && $uid === auth.uid && (!data.exists() || newData.val() !== data.val())" 
       } 
      } 
     } 
    } 
} 
+0

Hallo Dank für Ihre Antworten. Es scheint, ich bin ein bisschen verwirrt. Folgt die Datenstruktur der, die ich in meiner Frage angegeben habe? Oder wird es einen anderen Knoten unter der ersten UID mit der kombinierten UID und Token erstellen? Weil ich möchte, dass es wie 'user/uid' aussieht und die' uid' das Token enthält. Was ich denke, ist die Überprüfung der Position, die ich auf "Tokens/Benutzer /" einstellen, um zu erreichen, was ich will, aber danach bin ich verloren – CraftedGaming

+1

Meine Vermutung ist, dass Sie eine einfache Zeichenfolge schreiben möchten ('" hi "') to '/ Tokens/Benutzer/hA4hZrBieISwMOZaMYe7m6K5tpI3'. In diesem Fall sind Ihre ursprünglichen Regeln korrekt, aber Sie versuchen ein JSON-Objekt zu schreiben. –

Verwandte Themen