2016-07-24 92 views
1

這是從火力地堡我的數據庫中的JSON,我想去做的權威性一些規則,但我得到一個錯誤,我不知道該怎麼做:火力地堡權限被拒絕安全規則

"users" : { 
    "0BuRcGEZQRUaQ5T2gQf4RDUcuZE2" : { 
     "address" : "La Prensa", 
     "email" : "[email protected]", 
     "id" : "0BuRcGEZQRUaQ5T2gQf4RDUcuZE2", 
     "lastName" : "Vega", 
     "middleName" : "Paul", 
     "name" : "Christian", 
     "nroDocument" : "171645220", 
     "phoneNumber" : "1234567890", 
     "rol" : "administrador", 
     "secondLastName" : "Niama" 
    } 
} 

這些是我使用的規則:

{ 
    "rules": { 
     "users": { 
     "$user_id": { 
      ".read": "auth != null", 
      ".write": "auth.uid === $user_id" 
     } 
     } 
    } 
} 

錯誤:

angular.js:13550 Error: permission_denied at /users: Client doesn't have permission to access the desired data.

這是我在我的web應用程序出現錯誤。我看不到已註冊的用戶。但是當我停止使用$user_id它的作品。我認爲這個變量沒有得到我的價值。

代碼:

resultUsers : function() { 
    var ref = pharmacyFactory.ref.child("users"); 
    var result = $firebaseArray(ref); 
    return result; 
}, 
+0

在您的問題中沒有任何內容會讀取或寫入數據,因此沒有任何內容可以引發權限拒絕錯誤。沒有看到再現錯誤的最小代碼,它將很難回答。 –

+0

angular.js:13550錯誤:/ users處的permission_denied:客戶端無權訪問所需的數據。 這是我在我的網絡應用程序中得到的錯誤,我不能看到我已註冊的用戶,但是當我停止使用$ user_id時,它的工作原理我認爲該變量沒有得到我的值 –

+0

@StevenSparkies請添加您的代碼用來檢索用戶數據。 – adolfosrs

回答

2

的問題是,你正在使用$firebaseArray(ref)以保持整個/users分支的軌道,但你把你讀的規則內/users/user_id因此,由於您在/users中沒有讀取規則,因此它會將默認設置爲false

如果你希望用戶擁有讀取訪問整個/users分支,但只寫自己的用戶數據,你可能有興趣做以下幾點:

{ 
    "rules": { 
     "users": { 
     ".read": "auth != null", 
     "$user_id": { 
      ".write": "auth.uid === $user_id" 
     } 
     } 
    } 
} 

如果您希望用戶只能看到他自己的用戶,那麼你應該使用$firebaseObject(ref.child(userId))而不是$firebaseArray。並使用您的規則,如下所示:

{ 
    "rules": { 
     "users": { 
     "$user_id": { 
      ".read": "auth.uid === $user_id", 
      ".write": "auth.uid === $user_id" 
     } 
     } 
    } 
} 
+0

謝謝,工作完美....但我能做什麼,如果我只是想讓用戶只看到他自己的用戶不是其他人 –

+0

@StevenSparkies剛剛更新了答案:) – adolfosrs