Правила Firebase: разные между этими правилами - PullRequest
0 голосов
/ 21 октября 2018

Чем отличаются правила такого типа?Это похоже на то же самое, но я действительно не понял.

"rules": {
  "Users": {
    ".read": true,
    ".write": "auth !== null && data.child('uid').val() === auth.uid",
  }
}

VS

"rules": {
  "Users": {
    "$uid": {
      ".read": true,
      ".write": "auth !== null && data.child('uid').val() === auth.uid",
    }
  }
}

1 Ответ

0 голосов
/ 21 октября 2018

В первом наборе правил пользователь может прочитать весь узел /Users, если они аутентифицированы, и если этот узел /Users содержит свойство uid со своим значением.

Во втором наборе правил aПользователь может читать только конкретный подузел /Users при тех же условиях.Переменная $ действует как подстановочный знак во втором наборе правил: правила в /Users/$uid применяются к каждому конкретному пользовательскому узлу.

Допустим, у вас есть узел /Users, например:

Users: {
  uid1: {
    name: "user 1",
    uid: "uid1"
  },
  uid2: {
    name: "user 2",
    uid: "uid2"
  },
  uid3: {
    name: "user 3",
    uid: "uid3"
  }
}

Со вторым набором правил пользователь uid1 может читать только свой собственный узел /Users/uid1.Если они попытаются прочитать /Users, они получат Permission denied.И поэтому они не могут получить список всех пользователей.

Теперь давайте внесем небольшое изменение в JSON, добавив /Users/uid:

Users: {
  uid: "uid1",
  uid1: {
    name: "user 1",
    uid: "uid1"
  },
  uid2: {
    name: "user 2",
    uid: "uid2"
  },
  uid3: {
    name: "user 3",
    uid: "uid3"
  }
}

Теперь с вашим первым набором правил,только uid1 может читать /Users.Это даст им как собственные данные, так и данные всех остальных пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...