首页 文章

angular 4路由器auth-guard未在同一路由上调用

提问于
浏览
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}
];

如果将来退出后这是目标页面,我不想处理登录页面的名称 . 因此,在注销完成后,logout组件将重定向到startpage .

目前,如果您进行了身份验证,则不是起始组件(稍后可能有仪表板),而是重定向到“buchbestellungen”路由 . 如果您尚未登录,则访问起始页面会重定向到/ buchbestellungen,并且auth-guard服务会重定向到登录路由 .

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

Example 1: buchbestellungen2 - > logout() - >重定向到/ - >重定向到/ buchbestellungen由auth-guard拦截我在/ login路由上结束

Example 2: buchbestellungen - > logout() - >重定向到/ - >重定向到/ buchbestellungen(没有auth-guard,没有重定向到/ login)

是否有可能,路由器不会调用auth-guard,因为我来自/ buchbestellungen这个溃败已经过验证了?是否有可能强制路由器调用防护?

谢谢

1 回答

  • 0

    如果路由没有改变(默认情况下,重定向不计入路由更改),默认情况下Angular会重用组件 . 除了实现自定义RouteReuseStrategy(这看起来像是一种过度杀伤)之外,我唯一的想法就是创建一种附加到/ logout路径的LogoutComponent . 该组件会在ngOnInit期间将用户重定向回root,或者可以由AuthGuard保护,AuthGuard将执行重定向 .

相关问题