Вся логика на Angular 2 делается через классы-сервисы, в которых можно производить проверки любой сложности. Достаточно выполнить 3 простых шага:
1. К примеру, в user.service.ts добавим информацию об авторизованном пользователе.
2. Создадим сервис AuthGuard, который будет отвечать за авторизацию. Он должен имплементировать интерфейс CanActivate
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private userService: UserService) {}
canActivate(route: ActivatedRouteSnapshot, state:RouterStateSnapshot): Promise<boolean>|boolean {
return this.userService.isAuth;
}
}
3. В описании путей укажем класс, отвечающий за проверку доступа:
{
path: 'logout',
component: LogoutComponent,
canActivate: [AuthGuard]
},
{
path: 'login',
component: LoginComponent,
canActivate: [GuestGuard]
},
В этом примере все сложные проверки могут производиться в get isAuth() сервиса UserService.