РЕДАКТИРОВАТЬ: Очевидно, что это устарело, теперь вы обеспечиваете свою защиту в массиве providers
в NgModule. Смотрите другие ответы или официальную документацию для получения дополнительной информации.
- начальная загрузка компонента устарела
-
provideRouter()
устарел
Я пытаюсь настроить Аутентификацию в своем проекте, используя имя пользователя и AuthGuard из руководства Angular2: https://angular.io/docs/ts/latest/guide/router.html
Я использую релиз: "@angular/router": "3.0.0-beta.1".
Я постараюсь объяснить как можно больше, не стесняйтесь сказать мне, если вам нужно больше деталей.
У меня есть файл main.ts, который запускает приложение со следующим кодом:
bootstrap(MasterComponent, [
APP_ROUTER_PROVIDERS,
MenuService
])
.catch(err => console.error(err));
Я загружаю MasterComponent, который загружает заголовок, содержащий кнопки, которые позволяют мне перемещаться по моему приложению, и он также содержит мой основной на данный момент.
Я следую руководству, чтобы сделать мое приложение таким же образом со следующим app.routes.ts:
export const routes: RouterConfig = [
...LoginRoutes,
...MasterRoutes
];
export const APP_ROUTER_PROVIDERS = [
provideRouter(routes),
AUTH_PROVIDERS
];
И login.routes.ts из руководства, которое определяет мой AuthGuard:
export const LoginRoutes = [
{ path: 'login', component: LoginComponent }
];
export const AUTH_PROVIDERS = [AuthGuard, AuthService];
у моего компонента Master есть собственное определение маршрута, которое также содержит охрану, которую я пытаюсь настроить. master.routes.ts:
export const MasterRoutes : RouterConfig = [
{ path: '', redirectTo: '/accueil', pathMatch: 'full' },
{
path: 'accueil',
component: AccueilComponent
},
{ path: 'dashboard', component: DashboardComponent, canActivate: [AuthGuard] },
];
И я использую те же файлы, что и руководство, которые являются auth.guard.ts, auth.service.ts, login.component.ts и login.routes.ts.
В моем файле header.component.ts, когда я пытаюсь получить доступ к любым маршрутам, он работает просто отлично, но когда я пытаюсь получить доступ к защищенному пути (/dashboard), я получаю провайдера No для AuthGuard! ошибка.
Я видел недавний пост с той же проблемой, что и у меня (NoProviderError использует CanActivate в Angular 2), но для меня защита правильно загружена до файла main.ts, поэтому мой маршрутизатор должен знать, какие маршруты должны быть предоставлены с правом AuthGuard?
Любая помощь или совет будет принята с благодарностью. Спасибо !