2017-07-20 10 views
1

Wie bekomme ich currentUser in Firebase Admin SDK. Im Client-SDK können wirFirebase Admin SDK - Aktueller angemeldeter Benutzer - Nodejs

onAuthStateChanged() or firebase.auth().currentUser() 

In NodeJS Server.js Datei Firebase Admin SDK onAuthStateChanged() Arbeiten Sie nicht verwenden, was sollte hier arbeiten?

Grundsätzlich möchte ich nur angemeldete Benutzer Zugriff auf meine inneren Seiten, so dass ich Express, nodejs app.get Methode zum Erstellen von Routen verwenden.

app.get('/', authenticationRequired ,function(req,res){ 
    res.sendFile(path.join(__dirname+'/index.html')); 
}); 

Und authenticationRequired Methode zu schreiben versuchen, (gibt wahr oder falsch, je nachdem ob Benutzer angemeldet ist).

+0

https://firebase.google.com/docs/auth/admin/verify-id-tokens –

+0

Ich habe getToken versucht, durch 'firebase.auth(). GetToken()' diese Fehler kommen ' Eigenschaft 'getToken' von undefined kann nicht gelesen werden –

+0

'firebase.auth(). CurrentUser.getToken' –

Antwort

6

Das Firebase Admin SDK weiß nicht inhärent, welcher Benutzer Ihre Express Web App verwendet. Sie müssen Code dafür implementieren. Wenn Sie sich bereits in der Web-App mit Firebase-Authentifizierung erfolgt dies vor:

  1. Retrieve the user's ID token on the client

    Sie eine ID-Token erhalten können Benutzer durch die firebase.auth().currentUser.getToken() Methode.

  2. Pässe Dieser Token von dem Client zu dem Server

  3. Verify the token on the server

    Die Token Benutzerkennung kann mit Hilfe der Methode admin.auth().verifyIdToken(idToken) prüft werden. Bei Erfolg gibt es ein Versprechen mit der decodedToken zurück, sonst wird es eine abgelehnte Zusage zurückgeben.

+0

Danke - dieser Ansatz macht Sinn. Gibt es Hinweise für Fälle, in denen wir die Datei firebase.json verwenden, um Inhalte direkt aus einer Cloud-Funktion zu liefern? d. h. wir zeigen den Benutzern keine statische Seite, auf der ich das obige tun kann. – James

Verwandte Themen