0
首先,我已經研究過這個,並且引用了前一個問題。我已經完成了這個問題所陳述的內容,但沒有任何積極的結果。帶用戶角色的FireBase安全規則
我使用:
Angular JS
Firebase
AngularFire -- Integrate Firebase with AngularJS
E-mail and Password Firebase Authentication
我在火力地堡爲我的用戶節點:
"users" : {
"simplelogin:49" : {
"email" : "[email protected]",
"full_name" : "First Last",
"roles" : {
"administrator" : true
}
},
"simplelogin:64" : {
"email" : "[email protected]",
"full_name" : "first last",
"roles" : {
"administrator" : false
}
}
}
我試圖在添加一個條目我客戶表,同時登錄到simplelogin:49
,正如你所看到的是一個廣告ministrator。
// Create the Client
var clientRef = firebaseUrl+'clients';
var clientsListRef = new Firebase(clientRef);
clientsListRef.push({
'uid': userData.uid,
'number': cl.number,
'company': cl.company,
'full_name': cl.full_name,
'email': cl.email,
'phones': {
'primary': cl.phones.primary,
'cell': cl.phones.cell,
'alte': cl.phones.alte
},
'addresses': {
'billing': {
'line1': cl.addresses.billing.line1,
'line2': cl.addresses.billing.line2,
'city' : cl.addresses.billing.city,
'state': cl.addresses.billing.state,
'zip' : cl.addresses.billing.zip
},
'shipping': {
'line1': cl.addresses.shipping.line1,
'line2': cl.addresses.shipping.line2,
'city' : cl.addresses.shipping.city,
'state': cl.addresses.shipping.state,
'zip' : cl.addresses.shipping.zip
}
}
});
我已經設置了火力地堡中的一些規則爲clients
節點,並有如下幾點:
"clients": {
"$auth": {
".write": "root.child('users').child('$auth.uid').child('roles').child('administrator').val() === true"
}
}
我也試過這樣的規則:
"clients": {
".write": "root.child('users').child('auth.uid').child('roles').child('administrator').val() === true"
}
所有我得到當我運行這個,並把它們放在一起是一個權限被拒絕的錯誤。如果我在Firebase模擬器中運行它,結果如下:
Attempt to write Success({"user":"Test"}) to /clients with auth=Success({"id":49,"provider":"password","uid":"simplelogin:49"})
/
/clients:.write: "root.child('users').child('auth.uid').child('roles').child('administrator').val() === true"
=> false
No .write rule allowed the operation.
Write was denied.
我只想知道我錯過了什麼。問題中的人說他/她在企業中取得了成功。
不知道這是所有爲w rong,但至少'child('$ auth.uid')'應該是'child($ auth.uid)'(所以沒有引號)。 '$ auth'是一個變量,而''auth''只是一個字符串文字。 –
您的數據樣本列出'用戶',但您的安全規則引用'客戶端'。不確定如果代碼不能準確地重現創建問題所需的條件,我們將會獲得多大的幫助。請參閱[創建mcve](http://stackoverflow.com/help/mcve) – Kato
Frank Van Puffelen - 當我刪除引號時,Firebase將引發一個錯誤,指出不存在此類方法或屬性。該文件也稱它爲引號。 (https://www.firebase.com/docs/web/) – moevans