Ich möchte die Firebase-Authentifizierung in einer NativeScript-App einrichten und es fällt mir schwer, die beste Vorgehensweise zum Einrichten der Routen/Komponenten herauszufinden.NativeScript Route Für Firebase einrichten Anmelden
Was ich tun möchte, ist es wie eine typische moderne App einrichten, wo, wenn der Benutzer nicht angemeldet ist, sie dann auf die Anmeldeseite umgeleitet werden. Wenn sie eingeloggt sind, überspringen sie die Anmeldeseite und werden zu ihrem Dashboard weitergeleitet.
Ich habe ein user.service wie diese
import { Injectable } from '@angular/core';
import { RouterExtensions } from 'nativescript-angular/router';
import firebase = require("nativescript-plugin-firebase");
@Injectable()
export class UserService {
private uid;
private route;
constructor(router: RouterExtensions){
this.route = router;
}
public initFirebase(){ //This gets called from AppComponent Constructor
let that = this;
firebase.init({
onAuthStateChanged: function(data) {
if (data.loggedIn) {
that.route.navigate(["/dash"]);
} else {
console.log("NOT logged in.. redirecting to login");
that.route.navigate(["/login"]);
}
}
}).then(
(instance) => {
console.log("Firebase Initialized");
},
(error) => {
console.log("firebase.init error: " + error);
}
);
}
Und in dem Router, was ich zur Zeit eingerichtet haben ist
export const routes = [
{ path: "", component: LoginComponent },
{ path: "dash", component: DashComponent},
{ path: "login", component: LoginComponent}
];
Aber das blinkt die Login-Seite, bevor es den Strich leitet die ist furchtbar.
Ich habe auch versucht, dies zu tun ..
export const routes = [
{ path: "", component: AppComponent },
{ path: "dash", component: DashComponent},
{ path: "login", component: LoginComponent},
];
Aber dies Grund macht Firebase zweimal initialisieren.
SO schließlich habe ich versucht, dieses ..
export const routes = [
{ path: "", component: DashComponent},
{ path: "dash", component: DashComponent},
{ path: "login", component: LoginComponent},
];
Aber dies wird mit der DashComponent Konstruktor, bevor ich es will. Ich möchte Firebase-Init in User.Service ausführen FIRST und dann DashComponent ausführen, nachdem der Benutzer Service Firebase Init abgeschlossen und umgeleitet zu Bindestrich.
Was ist die beste Praxis, um dies zu lösen?