J'ai une application construite dans firebase et angular, et je veux pouvoir garder les utilisateurs connectés après avoir actualisé la page. À l'heure actuelle, j'ai un écran de connexion avec deux champs d'entrée de base qui se lient à un contrôleur
this.email = "";
this.pass = "";
this.emessage = "";
this.loginUser = function() {
ref.authWithPassword({
email: this.email,
password: this.pass
}, function(error, authData) {
if (error) {
console.log("Login Failed!", error);
this.emessage = error.message;
$scope.$apply();
} else {
dataStorage.uid = authData.uid;
$location.path('/projects');
$scope.$apply();
}
}.bind(this));
}
Tout cela est parfait et cela fonctionne, mais lorsque l'utilisateur actualise la page, il est déconnecté. Existe-t-il un moyen de vérifier, lorsque le contrôleur est chargé, si l'utilisateur est déjà connecté et redirigé automatiquement? Merci!
Le code que vous avez maintenant gère le cas où l'utilisateur ouvre une session. Pour gérer les cas où l'utilisateur est déjà connecté, vous surveillez l'état d'authentification. À partir de documentation de Firebase sur le contrôle de l'état d'autorisation :
// Create a callback which logs the current auth state
var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
ref.onAuth(function(authData) {
if (authData) {
console.log("User " + authData.uid + " is logged in with " + authData.provider);
} else {
console.log("User is logged out");
}
});
Généralement, vous souhaitez uniquement afficher le bouton de connexion dans la variable else
de cette fonction.
Si vous utilisez Angular 4, vous pouvez utiliser AngularFire2 - Intégration Firebase officielle.
J'ai un AuthService qui enveloppe AngularFire2. Je viens de récupérer le constructeur d'AuthSession in Service et de l'utiliser quand j'en ai besoin. Exemple:
@Injectable()
export class AuthenticationService {
private authState: any;
constructor(public afAuth: AngularFireAuth) {
this.afAuth.authState.subscribe((auth) => {
this.authState = auth
});
}
get user(): any {
return this.authenticated ? this.authState : null;
}
}
Code de service d’authentification complet ici Full Angular 4 avec l’exemple Firebase ici