2017-03-27 62 views
0

我的組件狀態負載:如何防止在角2

constructor(
     private router: Router 
    ) { 

     router.events.subscribe((val) => { 
      if (val instanceof NavigationStart && !isloggedIn) { 
       console.log(val); 
      } 
     }); 
    } 

如果用戶在navigationStart記錄,我想阻止用戶加載頁面,如果用戶沒有登錄怎麼辦這在角2?

+0

https://angular.io/docs/ts/latest/guide/router.html#!#guard-admin-feature –

回答

2

您應該創建AuthGuard爲所有路線設置它,如果沒有登錄,用戶不應該登陸。

const routesConfig: Routes = [ 
    { 
     path: 'admin', 
     component: AdminLayoutComponent, 
     canActivate: [AuthGuard],   
     children: [ 
      { path: 'dashboard', component: AdminDashboardComponent },    
     ] 
    }, 
    {path: 'admin-login', component: AdminLoginComponent}, 
    {path: 'login', component: LoginComponent}, 
    {path: '**', redirectTo: ''} 
]; 

這裏是簡單的AuthGuard。

@Injectable() 
    export class AuthGuard implements CanActivate { 
     constructor() {} 

    canActivate() { 
     let user = JSON.parse(localStorage.getItem('user')) 

     // here do logic for navigate to login if user don't have local storage... 

     return true; 
     } 
    } 

欲瞭解更多信息,請查閱link