2016-07-02 38 views
6

Voglio creare una sicurezza basata sull'utente per Firebase/Storage. Qui di seguito permetti di scrivere bene se faccio solo caricare le immagini. Ma impedisce l'eliminazione di una foto. Come posso creare una corretta regola di sicurezza in questo caso?Storage di Firebase, quali sono le regole corrette per il caricamento/eliminazione basata sull'utente?

service firebase.storage { 
    match /b/<bucket>/o { 
    match /{allPaths=**} { 
     allow read: if request.auth != null; 
    } 
    match /users/{uid}/{filename} { 
     allow write: if isCurrentUser(uid); 
     allow write: if isImage() && 
         isCurrentUser(uid) && 
         lessThanNMegabytes(n) && 
         request.resource !=null && 
         filename.size() < 50; 
    } 
    } 
} 

function isCurrentUser(uid) { 
    return request.auth.uid == uid; 
} 

function lessThanNMegabytes(n) { 
    return request.resource.size < n * 1024 * 1024; 
} 

function isImage() { 
    return request.resource.contentType.matches("image/.*"); 
} 

risposta

9

userei questo per verificare se si sta creando/aggiornamento di un file o di rimuoverlo

match /users/{uid}/{filename} { 
    allow write: if isCurrentUser(uid); 
    allow write: if resource == null || 
     (isImage() && 
     lessThanNMegabytes(n) && 
     request.resource !=null && 
     filename.size() < 50); 
}