2016-05-19 5 views
2

Я действительно борюсь с правилами безопасности базы данных firebase.Правила безопасности базы данных Firebase

Я работаю над простым приложением, где пользователи могут вести список записей, которые любой может читать, но только пользователь, создавший запись, может редактировать или удалять.

Просто рассмотрите это как приложение todo, где аутентифицированные пользователи могут управлять списком задач. Пользователи могут читать список задач друг друга, но только пользователь, создавший задачу, может удалить или отредактировать его.

Я пробовал разные варианты, но не смог найти правильную политику безопасности.

Есть ли какой-нибудь пример, который я могу выполнить, или любую рекомендацию о том, как структурировать данные для упрощения политики безопасности?

правило безопасности Образец

Я пытался что-то вроде этого -

"rules": { 
"records" : { 
    ".read" : true, 
    "$user_id": { 
     ".write": "auth.uid === $user_id" 
     } 
    } 
    } 
} 

Так что каждый может читать записи, но только зарегистрированный пользователь с соответствующими user_id должны иметь возможность добавлять, редактировать или удалять запись.

Однако, когда я пытаюсь написать действие в симуляторе, я всегда получаю отказ от записи. Я передаю auth uid как «user_id» в тело/данные запроса.

Я также попытался

{ 
"rules": { 
"records" : { 
    ".read" : true, 
    ".write": "auth.uid === data.child('user_id').val()" 
    } 
    } 
} 
+0

Вы должны опубликовать то, что вы пробовали и то, что случилось с ним. – api55

+0

@ api55 Я обновил вопрос с помощью примера правила безопасности. – am17

ответ

3

Я нашел это в документации. У пользователей узла есть дочерние элементы, хранящиеся с ключом auth.uid в качестве ключа. Таким образом, вы основно сравнить пользователи Uid с ключом перед записью этой записи:

{ 
    "rules": { 
    "users": { 
     "$user_id": { 
     // grants write access to the owner of this user account 
     // whose uid must exactly match the key ($user_id) 
     ".write": "$user_id === auth.uid", 
     ".read": true 
     } 
    } 
    } 
} 

https://www.firebase.com/docs/security/guide/user-security.html