2017-02-08 13 views
1

, если пользователь, который не входит в систему, хочет использовать некоторый защищенный root, например, «/ items» authguard return false и не перемещается «/ login».Angular2 Authguard маршрут для входа в систему

export const APP_ROUTES: Routes = [ 
    {path: '', component: PublicComponent, children: PUBLIC_ROUTES}, 
    { 
    path: '', 
    component: SecureComponent, 
    resolve: {user: UserResolver}, 
    canActivate: [AuthGuard], 
    children: SECURE_ROUTES 
    }, 
    {path: '', redirectTo: '/login', pathMatch: 'full'} 
]; 

AuthGuard Код:

@Injectable() 
export class AuthGuard implements CanActivate { 
    constructor(private userService: UserService) {} 

    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot){ 
    let url: string = state.url; 
    return this.checkLogin(url); 
    } 

    checkLogin(url: string): Observable<boolean> { 
    this.userService.redirectUrl = url; 
    return this.userService.getPrincipal() 
     .map(user => { 
     if(user) 
      return true; 

     return false; 
     }); 
    } 
} 
+0

Что вопрос здесь :)? –

+0

Если пользователь не является логином, тогда я хочу перейти на страницу входа? :) – vangoo

+0

@vangoo вы пробовали мой код ниже?. –

ответ

1

Вводят Router и перенаправить на страницу входа, если пользователь не вошел в систему следующим образом:

@Injectable() 
export class AuthGuard implements CanActivate { 

    constructor(private userService: UserService, private router: Router) {} 

    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean{ 
    let url: string = state.url; 
    return this.checkLogin(url); 
    } 

    checkLogin(url: string): Observable<boolean> { 
    this.userService.redirectUrl = url; 
    return this.userService.getPrincipal() 
     .map(user => { 
     if(user) 
      return true; 

     this.router.navigate(['login']); 
     return false; 
     }); 
    } 
} 
+0

can authguard будет перемещение? это лучший способ? – vangoo

+0

Ofc можно перенаправить из Guard. –

+0

Почему будет возвращено false после навигации? – vangoo