Есть ли способ установить «base» canActivate
при настройке маршрутов в Angular2? Чтобы все маршруты были покрыты одной и той же базовой проверкой, а затем каждый маршрут может иметь более детальную проверку.Использование базовой защиты для всех маршрутов в приложении Angular 2
У меня есть AppModule
с маршрутизацией, как это:
@NgModule({
imports: [
RouterModule.forRoot([
{
path: '',
component: HomeComponent,
canActivate: [AuthenticationGuardService],
data: { roles: [Roles.User] }
}
])
],
exports: [
RouterModule
]
})
export class AppRoutingModule { }
И для модуля художественного FeatureModule
:
@NgModule({
imports: [
RouterModule.forChild([
{
path: "feature",
component: FeatureComponent,
// I'd like to avoid having to do this:
canActivate: [AuthenticationGuardService],
data: { roles: [Roles.User] }
}
])
],
exports: [
RouterModule
]
})
export class FeatureRoutingModule { }
Я позволил AuthenticationGuardService
проверить, если пользователь имеет доступ к маршруту с помощью ролей предоставлено в data
.
Могу ли я что-то сделать, чтобы избежать необходимости устанавливать canActivate
и data
во всех модулях маршрутизации функций? Я бы хотел настроить «base» canActivate
для всех маршрутов в этом приложении.
Вы можете создать объект маршрута из функции класса или хелперов. Это самое простое (и, возможно, единственное доступное) решение. – estus
@estus Итак, вы имеете в виду, что я должен сделать что-то вроде: «RouterModule.forChild ([helperService.getRoute (« feature », FeatureComponent)])? И тогда эта вспомогательная служба (или класс или метод ..) всегда добавляет базовый Guard к сгенерированному объекту маршрута? – Joel
Да. Я бы лично пошел с чем-то вроде «RouterModule.forChild ([new AuthenticatedRoute ({path: ..., component: ...))])' – estus