Javascript 如何将路由保护应用于功能模块路由模块?
所以,我正在构建一个Angular 4应用程序,我希望所有路由都得到保护(当然除了登录路由)。我正在尝试使用功能模块和功能模块路由。那么,想象一下这样的情况:Javascript 如何将路由保护应用于功能模块路由模块?,javascript,angular,routing,canactivate,angular-route-guards,Javascript,Angular,Routing,Canactivate,Angular Route Guards,所以,我正在构建一个Angular 4应用程序,我希望所有路由都得到保护(当然除了登录路由)。我正在尝试使用功能模块和功能模块路由。那么,想象一下这样的情况: import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { AuthGuardService } from './auth/auth-guard.service'; import { L
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { AuthGuardService } from './auth/auth-guard.service';
import { LoginComponent } from './login/login.component';
import { RegisterComponent } from './register/register.component';
import { ProtectedRouteComponent } from './protected-route/protected-route.component';
const routes: Routes = [
{ path: 'login', component: LoginComponent }, // no auth guard for login
{
path: '',
canActivate: [AuthGuardService],
children: [
{
path: '',
children: [
{ path: 'register', component: RegisterComponent },
{ path: 'protected', component: ProtectedRouteComponent }
]
}
]
}
];
@NgModule({
imports: [ RouterModule.forRoot(routes) ],
exports: [ RouterModule ]
})
export class AppRoutingModule {}
,然后是用户功能模块路由配置,如:
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { UsersComponent } from './users.component';
const routes: Routes = [
{ path: 'users', component: UsersComponent }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class UsersRoutingModule {}
最好的方法是什么:
- 继续使用功能模块布线,以及
- 将路由防护应用于用户功能模块路由,而不复制canActivate防护?是否有任何方法可以将其从根路由模块传递给用户功能模块路由
Iraklis正在寻找相同的解决方案,我找到的解决方案包括以下步骤:
- 不要通过应用程序模块导入功能模块
- 而是将功能模块作为应用程序模块路由的一部分导入
- 其他模块将无法访问您的UserModule的组件和服务(直到您访问了其中一个
路由)/users
- 这可能不是问题,因为您的模块可能已经很好地分开了
{
path: '',
canActivate: [AuthGuardService],
children: [
{
path: '',
children: [
{ path: 'register', component: RegisterComponent },
{ path: 'protected', component: ProtectedRouteComponent }
]
},
{
path: '',
children: () => UsersModule
}
]
}