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