javascript - Angular 2/4 : How to restrict access to Login Route if user is already logged in?

标签 javascript angular

我有以下路线定义。

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/

相关文章:

Angular 如何使用管道名称从字符串调用管道?

angular - 'ea' 模板编译时出错

javascript - Angular 6依赖注入(inject)

java - 如何在调用 wicket ajax 提交按钮后调用 jquery 函数

javascript - 具有更灵活许可的 ExtJS 网格替代品?

javascript - 我需要向函数添加参数吗?

javascript - Angular2 路由守卫返回 Observable<bool>,如何处理错误

angular - @firebase/firestore : Firestore (5. 0.4) : Could not reach Cloud Firestore backend. 后端在 10 秒内没有响应

javascript - 隐藏元素时如何为 div 的背景设置动画?

javascript - ion-nav-view 中的 ng-style 或 style 没有从 Controller 获得值(value)