2016-03-22 30 views
1

İzin verilen geçerli kullanıcının Firebase veritabanına kendi verilerini okuyarak yazmasına izin vermeye çalışıyorum. Benim güvenlik verileri aşağıdaki gibidir:Firebase, geçerli kullanıcı için güvenlik ve kuralları ayarladı

{ 
    "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-1lV4bMchildByAutoId() yöntemle

e1fd0ccb-370a-4a6f-86af-87fdf97d25a0 gelen kazanılmış bir AutoID bir uid (benzersiz kullanıcı kimliği) 'dir. Belirli bir özelliğin değeri

een.

My güvenlik kuralları şunlardır:

{ 
    "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" 
     } 
    } 
    } 
} 
} 

böyle Firebase kuralları yazarsanız, setValue() izni özellikleri kısmında engellendi. 51:

2016-03-22 17 27,077 Herodus [884: 228445] [Firebase] setValue: veya removeValue: özellikler/at/-KDUEEZ4z-FCAoUci-RW başarısız oldu: permission_denied. Yanlış burada ne aradığımı

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

Somebody herhangi bir ipucu:

yeni bir özellik bu kod parçası ile eklenir?

+1

Sorunuzdaki JSON ağacı ve güvenlik kurallarının bir resmini eklediniz. Lütfen bunu gerçek JSON ve güvenlik kurallarıyla metin olarak değiştirin. Firebase veritabanınızdaki Dışa Aktar düğmesini tıklayarak JSON'u kolayca alabilirsiniz. JSON ve güvenlik kurallarını metin olarak kullanmak onları aranabilir hale getirir, bunları gerçek verilerinizle test etmek ve bunları cevaplarımızda kullanmak için genel olarak kullanmamıza izin verir ve genel olarak yapılması gereken sadece iyi bir şeydir. –

+0

Sorunuzun hemen altında bir [değiştir] (http://stackoverflow.com/posts/36161137/edit) bağlantısı var. –

+0

Umarım Frank, Firebase'de bir mühendis olarak ;-) –

cevap

1

Bu yola yazıyoruz:

/features/$autoId/$uid 

Sen gibi bir şey kullanarak veri yazmak istersiniz::

/features/-KDUEEZ4z-FCAoUci-rW 

Kurallarınızda sadece bu yolda yazma izni vermek

ref.childByAppendingPath(authData.uid).setValue(featureDict) 
İlgili konular