2015-11-18 3 views
1

Lorsqu'un utilisateur est supprimé via les utilisateurs enregistrés section du Connexion & Auth interface web firebase, la méthode onAuth ne se déclenche pas et l'utilisateur reste connecté et capable écrire dans la base de données. Comment peut-on s'assurer que la session de l'utilisateur est détruite alors l'utilisateur est supprimé?Suppression de l'utilisateur dans firebase ne déclenche pas onAuth méthode

+0

Copie possible de [Authentification Firebase non révoquée lorsque l'utilisateur a été supprimé?] (Http://stackoverflow.com/questions/19377172/firebase-authentication-not-revoked-when-user-deleted) –

Répondre

4

Règles de sécurité.

Lorsqu'un utilisateur est supprimé, il n'est pas immédiatement non authentifié. Cependant, vous pouvez écrire vos règles de sécurité d'une manière qui protège les données privées des utilisateurs qui n'existent plus. Prenez les données suivantes par exemple:

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

Dans cette situation, nous voulons que les utilisateurs dans la liste /users d'avoir accès à l'emplacement /privateData. Un simple auth != null fonctionnerait jusqu'à ce que l'un des utilisateurs soit supprimé.

{ 
    "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()" 
    } 
    } 
} 

Les règles ci-dessus vérifier non seulement pour un utilisateur authentifié, mais ils vérifient également que l'utilisateur existe dans l'emplacement /users.

Le jeton expirera et ne pourra plus se connecter. Mais avec des règles de sécurité robustes, vous pouvez garantir qu'ils n'ont plus accès à aucune donnée.

+0

Merci pour la réponse. Est-il possible de détecter qu'un utilisateur a essayé d'accéder à des données privées lorsqu'il n'est pas authentifié, puis de le déconnecter. Ou peut-il alors que l'utilisateur se déconnecte de sa session active avant l'expiration du jeton? – user3391835

+0

Vous pouvez créer un emplacement dans votre base de données Firebase indiquant quels utilisateurs sont supprimés. Si vous exécutez un programme d'écoute de valeur globale pour cela sur l'application des utilisateurs, vous pouvez alors appeler ref.unauth() lorsque les données apparaissent dans l'écouteur. Ce n'est pas élégant et généralement pas nécessaire lorsque vous avez des règles de sécurité appropriées. Le jeton expirera et ils perdront l'accès. –

+0

@DavidEast, vous devez supprimer le "auth.uid ==". La condition doit être "auth! = Null && root. * Blah * .exists()" ... – jazzgil