Angular 2/4:如果用户已经登录,如何限制对登录路由的访问?

Pri*_*ceG 5 javascript angular

我有以下路线定义.

export const Routes = RouterModule.forChild([
    {
        path: 'login',
        component: LoginComponent
    },
    {
        path: 'protected',
        canActivate: [AuthGuardService],
        component: ProtectedComponent
    },
    {
        path: 'home',
        component: HomeComponent,
        canActivate: [AuthGuardService],
    },
]);
Run Code Online (Sandbox Code Playgroud)

AuthGuardService如果用户未登录,我已成功实施限制对受保护路由的访问.

我想要实现的是,如果用户已经登录并访问了登录路由,我希望它重定向到主页等其他路由.

小智 16

如果我是你,我可能会简单地实现另一个与您的AuthGuardService完全相反的GuardService - 只有在本地存储中没有会话令牌的情况下才允许用户.然后使用它来保护登录组件.

export const Routes = RouterModule.forChild([
    {
        path: 'login',
        canActivate: [AnonymousGuardService],
        component: LoginComponent
    },
    {
        path: 'protected',
        canActivate: [AuthGuardService],
        component: ProtectedComponent
    },
    {
        path: 'home',
        component: HomeComponent,
        canActivate: [AuthGuardService],
    },
]);
Run Code Online (Sandbox Code Playgroud)