2016-07-07 26 views
0

Ich habe eine Firebase-App, mit der ich mich von verschiedenen Geräten aus anmelden kann, aber ich möchte die anderen Verbindungen trennen, wenn ich eine neue mit demselben Konto erstelle.Firebase-Benutzer bereits angemeldet

sah ich dieses Stück Code, aber ich denke, das ist für die alte Version sein könnte:

firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
    // User is signed in. 
    } else { 
    // No user is signed in. 
    } 
}); 

wie die richtige Idee Das sieht - wenn diese aufgerufen wird, ich eine Grafik Spruch zeigen konnte, „Oops aussieht Sie haben sich auf einem anderen Gerät angemeldet. " Dann feuern Sie eine Verbindung ab, während Sie der anderen Verbindung erlauben, fortzufahren?

Antwort

0

Dies ist nichts, was Sie mit auth allein bewältigen können, da die Token unabhängig generiert und gespeichert werden und es kein Konzept von "Gerätesitzungen" gibt, an denen abgefragt werden kann.

var deviceId = generateARandomDeviceIDAndStoreItInLocalStorage(); 

firebase.auth().signInWithPopup(/* ... */).then(function(user) { 
    var userRef = firebase.database().ref('users').child(user.uid); 
    return userRef.update({ 
    deviceId: deviceId 
    }); 
}); 

firebase.auth().onAuthStateChanged(function(user) { 
    var userRef = firebase.database().ref('users').child(user.uid); 
    userRef.child('deviceId').on('value', function(snap) { 
    if (snap.val() !== deviceId) { 
     // another device has signed in, let's sign out 
     firebase.auth().signOut(); 
    } 
    }); 
}); 

wichtige Einschränkung: Sie können jedoch etwas tun Dies ist keine sichere, durchsetzbare Möglichkeit zu garantieren, nur ein Gerät auf einmal angemeldet ist. Es ist vielmehr eine Client-gesteuerte Methode, um das Ziel zu erreichen, dass nur ein Gerät angemeldet ist.

Verwandte Themen