1

嗨我配置了这个路由:

const routes: Routes = [
  {
    path: '',
    component: LayoutComponent,
    canActivateChild: [AuthGuardService],
    children: [
      {
          path: '', 
          pathMatch: 'full', 
          redirectTo: '/buchbestellungen', 
          canActivate: [AuthGuardService]
       },
       {
          path: 'buchbestellungen', 
          component: BuchbestellungenComponent, 
          canActivate: [AuthGuardService] 
       },
       {
          path: 'buchbestellungen2', 
          component: Buchbestellungen2Component, 
         canActivate: [AuthGuardService] 
       },
    ]
  },
  {path: 'login', component: LoginComponent},
  {path: '**', component: NotFoundComponent}
];

我不想照顾登录页面的名称,如果那是将来注销后的目标页面。因此,注销完成后,注销组件将重定向到起始页。

目前,没有起始页组件(稍后,可能会有仪表板),但如果您通过了身份验证,则会重定向到“buchbestellungen”路由。如果您没有登录,访问起始页会重定向到 /buchbestellungen,而 auth-guard 服务会重定向到登录路径。

这适用于每条路线(例如 buchbestellungen2),但不是,当我在 /buchbestellungen 上注销时。这将重定向到“/”,然后返回到 buchbestellungen。但是 auth-guard 没有被调用(我在 canActivate() 方法中有一个 Console.log() ,但它也没有被调用)。

示例 1: buchbestellungen2 -> logout() -> 重定向到 / -> 重定向到 /buchbestellungen 被 auth-guard 拦截 i 结束于 /login 路由

示例 2: buchbestellungen -> logout() -> 重定向到 / -> 重定向到 /buchbestellungen(没有 auth-guard 并且没有重定向到 /login)

路由器是否有可能不调用 auth-guard,因为我来自 /buchbestellungen 并且该路由已经过身份验证?是否有可能强制路由器调用警卫?

谢谢

4

1 回答 1

0

如果路由没有改变(并且重定向不算作路由改变),Angular 默认会重用组件。除了实现自定义 RouteReuseStrategy (这在这里看起来有点过分),我唯一的想法是创建某种 LogoutComponent 附加到 /logout 路径。该组件将在 ngOnInit 期间将用户重定向回 root,或者它可以由 AuthGuard 保护,它将执行重定向。

于 2018-06-12T01:41:59.027 回答