Удаление пользователя в firebase не запускает метод onAuth

Когда пользователь удаляется через раздел Зарегистрированные пользователи веб-интерфейса Login & Auth firebase, метод onAuth не запускается, и пользователь остается в системе и может писать на база данных. Как можно гарантировать, что сеанс пользователя будет уничтожен, а затем удален пользователь?


person user3391835    schedule 18.11.2015    source источник
comment
Возможный дубликат аутентификации Firebase не отменяется при удалении пользователя?   -  person Frank van Puffelen    schedule 18.11.2015


Ответы (1)


Правила безопасности.

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

Возьмем, к примеру, следующие данные.

{
  "privateData": "only authenticated and existing users can read me!,
    "users": {
      "user1": "Alice",
      "user2": "Bob"
    }
  }
}

В этой ситуации мы хотим, чтобы только пользователи из /users списка имели доступ к /privateData расположению. Простой auth != null будет работать, пока один из пользователей не будет удален.

{
   "rules": {
     "privateData": {
        ".read": "auth != null && auth.uid == root.child('users').child(auth.uid).exists()",
        ".write": "auth != null && auth.uid == root.child('users').child(auth.uid).exists()"
     }
   }
}

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

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

person David East    schedule 18.11.2015
comment
Спасибо за ответ. Есть ли способ на основе этого определить, что пользователь пытался получить доступ к некоторым частным данным, когда он не прошел аутентификацию, а затем выйти из системы. Или он, как пользователь, может выйти из активного сеанса только до истечения срока действия токена? - person user3391835; 18.11.2015
comment
Вы можете создать в Firebase место, которое будет указывать, какие пользователи будут удалены. Если вы запустите прослушиватель глобального значения для этого в приложении пользователя, вы можете затем вызвать ref.unauth (), когда данные появятся в прослушивателе. Это не изящно и обычно не требуется, если у вас есть надлежащие правила безопасности. Срок действия токена истечет, и они потеряют доступ. - person David East; 19.11.2015
comment
@DavidEast, вы должны удалить auth.uid ==. Условие должно быть auth! = Null && root. * Blah * .exists () ... - person jazzgil; 15.03.2017