我正在尋找在NativeScript應用上設置Firebase身份驗證,我很難搞清楚設置路由/組件的最佳做法。設置Firebase登錄的NativeScript路由
我喜歡做的就是像任何典型的現代應用程序那樣設置它,如果用戶沒有登錄,那麼他們被重定向到登錄頁面。如果已經登錄,那麼他們跳過登錄頁面並被重定向到他們的儀表板。
我有這樣
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);
}
);
}
而在我目前已經設置了路由器user.service是
export const routes = [
{ path: "", component: LoginComponent },
{ path: "dash", component: DashComponent},
{ path: "login", component: LoginComponent}
];
但它重定向到破折號之前閃爍登錄網頁,其中是可怕的。
我也試着做..
export const routes = [
{ path: "", component: AppComponent },
{ path: "dash", component: DashComponent},
{ path: "login", component: LoginComponent},
];
但這種理性使火力地堡初始化兩次。
所以最後我想這個..
export const routes = [
{ path: "", component: DashComponent},
{ path: "dash", component: DashComponent},
{ path: "login", component: LoginComponent},
];
但這運行DashComponent構造之前,我想它。 我想讓user.service中的firebase init運行FIRST,然後在用戶服務firebase init完成並重定向到破折號後運行DashComponent。
解決此問題的最佳做法是什麼?