4

Ich benutze eine einfache benutzerdefinierte Authentifizierung mit angularfire2 und den Authentifizierungsdienst von Firebase.Persist angemeldet Benutzer mit angularfire2 mit Cookies

import { Injectable } from '@angular/core'; 
import { AngularFire } from 'angularfire2'; 
import { Cookie } from 'ng2-cookies'; 

@Injectable() 
export class GlobalMenuService { 

    loggedIn: boolean = false; 

    constructor(private af: AngularFire) { } 

    login(email: string, password: string) { 
     this.af.auth.login({ 
      email: email, 
      password: password 
     }) 
      .then((success) => { 
       this.loggedIn = true; 
      }); 
    } 

    logout() { 
     this.af.auth.logout(); 
     this.loggedIn = false; 
    } 
} 

Gibt es eine Möglichkeit, einige Daten in einem Cookie (Token, uid, E-Mail oder etwas) zu speichern, die Sitzung wiederherzustellen, das heißt, wenn der Benutzer kehrt zu dem App ihn wieder anmelden, ohne ihn mit schreiben die Anmeldeinformationen?

+1

Firebase behandelt die Sitzung automatisch. Wenn Sie Firebase v3 verwenden, wird das Token aktualisiert, ohne dass es abläuft –

+1

Hallo, es scheint nicht so zu sein und ich benutze die neueste Version 3.1.0. Wie Sie sehen, injiziere ich eine Instanz von AngularFire in den Konstruktor und af.auth.getAuth() ist immer Null, wenn ich die Anwendung starte. –

Antwort

3

Sie sollten auth.subscribe() verwenden. Diese Funktion wird immer dann aufgerufen, wenn sich der Authentifizierungsstatus ändert.

this.af.auth.subscribe(user => { 
    if (user) { 
    // User is signed in. 
    ... do other stuff 
    } else { 
    // No user is signed in. 
    ... do other stuff 
    } 
}); 

Wenn Sie bereits angemeldet sind, wenn Sie Ihre App öffnen, oder Sie signInWithEmailAndPassword aufrufen, wird diese Funktion aufgerufen und auth werden Ihre protokolliert Benutzerdaten enthalten.

+0

Ich habe keinen direkten Verweis auf Firebase, da meine App für die Verwendung der AngularFire-Bibliothek konfiguriert ist. Wissen Sie vielleicht, ob die Bibliothek die vorgeschlagene Methode unterstützt oder etwas mit ihr identisch ist, da ich sie nicht finden kann? –

+0

Sie haben recht, ich habe meine Antwort mit einigen gefundenen Informationen aktualisiert [hier] (https://github.com/angular/angularfire2/blob/master/docs/5-user-authentication.md) Löst dies Ihr Problem ? :) –

+0

Ich sehe, der Authentifizierungsstatus war die ganze Zeit persistent Ich habe gerade die falsche Methode aufgerufen. Danke, dass du mir geholfen hast, mein Problem zu lösen, aber auch danke, dass du nett und höflich warst, da dies mein erster Beitrag war. Ich dachte, ich würde mich verprügeln, weil 'Text nicht korrekt formatiert ist' oder 'Information ist nicht ausreichend' oder X Grund:)). –

Verwandte Themen