2016-12-12 94 views
0

我想設置管理節點可以寫入的規則&讀取事件的所有節點, 也可以讀/寫/創建到他的節點。 我的問題當我運行我的應用程序時,我得到權限被拒絕。 我的規則是:登錄用戶的firebase用戶安全

{ 
    "rules": { 
    "events": { 
     ".read": "root.child('admin').hasChild(auth.uid)", 
     ".write": "root.child('admin').hasChild(auth.uid)", 
     "$uid": { 
     ".write": "$uid === auth.uid", 
     ".read": "auth != null && auth.uid == $uid" 
     } 
    }, 

我的代碼:

constructor(public af: AngularFire, public userData: UserData) { 
    this.smartTableData = this.af.database.list('events/' + this.userData.user.uid + '/contacts'); 
    } 
+0

請更新您的問題與您想要成功,但失敗的操作代碼。 –

+0

@FrankvanPuffelen我添加了在設置此規則時完成訪問的代碼。 –

+0

只要用戶在連接偵聽器時進行身份驗證,就不會失敗。如果您確定在用戶通過身份驗證後您只附加了偵聽器,您是否可以設置重現此問題的jsbin? –

回答

0

我不認爲你必須設置你的規則的工作方式,由於方式的規則級聯。

但基於我認爲你需要,下面的設置應該做的伎倆。

"rules": { 
    "events":{ 
     "$uid": { 
      ".write": "$uid === auth.uid || root.child('admin').hasChild(auth.uid)", 
      ".read": "(auth != null && auth.uid == $uid) || root.child('admin').hasChild(auth.uid)" 
     } 
    } 
},