2017-07-03 6 views
0

Ich versuche, die Beispiele folgen in den Firebase Sicherheitsregeln für Cloud Storage Reference gelegt:Firebase Sicherheitsregeln für Cloud Storage split() Beispiel Fehler

https://firebase.google.com/docs/reference/security/storage/

ich & das Beispiel Paste kopieren für split() in meine Lager Regeln und es wird nicht kompilieren/lass mich sparen:

Teilt einen String nach einem vorgesehenen regulären Ausdruck und gibt eine Liste von Strings. Verwendet die Google RE2-Syntax.

// Allow files named "file.*" to be uploaded 
match /{fileName} { 
    allow write: if fileName.split('.*\..*')[0] == 'file' 
} 

Der Fehler erhalte ich: Unexpected '.'.

Für das Leben von mir, ich nicht den Beispielcode erhalten können laufen zur Verfügung gestellt, noch kann ich Änderungen vornehmen und erhalten Regex wie erwartet funktionieren .

Hat jemand irgendwelche Vorschläge für Allow files named "file.*" to be uploaded?

Antwort

2

Es scheint ein \ fehlt in den Regeln. Versuchen Sie dies:

// Allow files named "file.*" to be uploaded 
match /{fileName} { 
    allow write: if fileName.split('.*\\..*')[0] == 'file' 
} 

Im Allgemeinen bei der Arbeit mit regulären Ausdrücken, sind die umgekehrten Schrägstriche die erste Sache zu überprüfen. Verschiedene Systeme verwenden Backslashes zum Entweichen und manchmal (wie hier) müssen Sie doppelt entkommen.

+1

Frank, danke für die schnelle Antwort. Dein regex 'split ('. * \\ .. *') [0]' Beispiel funktionierte immer noch nicht für mich, aber dein Kommentar zu Double Escaping brachte mich auf den richtigen Weg. Scheint, du würdest 'split ('\\.') [0]' machen, um den tatsächlichen Dateinamen zu erhalten, der für mich funktioniert hat. Fehle ich etwas oder ist das Beispiel in der Dokumentation ein bisschen? Ich habe auch falsche Negative beim Testen direkt nach einer Änderung, scheint es eine Laufzeitverzögerung für die Regeln, um Knoten zu erreichen oder etwas Cache zu entfernen? – briannyc

+1

@briannyc: Ihre Beobachtung bezüglich der Verzögerung ist korrekt. Es wird im [Leitfaden zu Sicherheitsregeln] (https://firebase.google.com/docs/storage/security/start#edit_rules) erwähnt: _Regeln werden sofort auf Cloud Storage-Server hochgeladen, es kann jedoch bis zu fünf Minuten dauern, bis sie live_ werden. . –

Verwandte Themen