2017-09-08 64 views
0

我想用ionViewWillEnter來檢查用戶是否登錄。如果它返回false然後指示他們登錄頁。然後我想要調用intializeapp函數。我對Angular和Ionic相當陌生,所以任何提示都會有所幫助。 `我想看看用戶是否已登錄,如果不推送他們到登錄頁面

ionViewCanEnter() { 
    console.log("1"); 
    console.log(this.userSevice.isUserLoggedIn()); 
    if (this.userSevice.isUserLoggedIn() === false){ 
     this.nav.push(LoginPage); 
     alert("user is logging in"); 
    } 
    else{ 
     this.initializeApp(); 
    } 
    }` 

回答

1

有在角一個美麗的概念稱爲Guard,你可以用它來處理在角應用你的整個登錄流程。

您可以創建一個auth警衛並將其放置在您的路由器或任何位置,並強制用戶進入登錄頁面,以防他們未登錄並嘗試訪問該站點的私有區域。

這是一個簡單的身份驗證後衛

@Injectable() 
export class AuthGuard implements CanActivate { 

    constructor(private router: Router, private authService: AuthService) { } 

    canActivate(): Observable<boolean> | boolean { 
    // here check if this is first time call. If not return 
    // simple boolean based on user object from authService 
    // otherwise: 

    return this.authService.getAuthenticated.map(user => { 
      this.authService.setUser(user); 
      return user ? true : false; 
    }) 

    } 
} 

,並在你的路由器,你可以使用這樣

const routes: Routes = [ 
    { 
    path: '', 
    canActivate: [AuthGuardService], 
    runGuardsAndResolvers: 'always', 
    } 
    ... 
] 
相關問題