我有以下路线定义。
export const Routes = RouterModule.forChild([
{
path: 'login',
component: LoginComponent
},
{
path: 'protected',
canActivate: [AuthGuardService],
component: ProtectedComponent
},
{
path: 'home',
component: HomeComponent,
canActivate: [AuthGuardService],
},
]);
我已成功实现 AuthGuardService
,如果用户未登录,它会限制对 protected 路由的访问。
我想要实现的是,如果用户已经登录并访问登录路由,我希望它重定向到另一个路由,如主页。
最佳答案
如果我是你,我可能会简单地实现另一个 GuardService,它的工作方式与你的 AuthGuardService 完全相反——只有在 f.e. 时才允许用户。本地存储中没有 session token 。然后用它来保护登录组件。
export const Routes = RouterModule.forChild([
{
path: 'login',
canActivate: [AnonymousGuardService],
component: LoginComponent
},
{
path: 'protected',
canActivate: [AuthGuardService],
component: ProtectedComponent
},
{
path: 'home',
component: HomeComponent,
canActivate: [AuthGuardService],
},
]);
关于javascript - Angular 2/4 : How to restrict access to Login Route if user is already logged in?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44593673/