首页 文章

Angular2:成功登录和注销被重定向到localhost:3000 /#

提问于
浏览
0

我使用PathLocationStrategy和Angular2 rc.4(路由器3.0.0-beta.2) .

我正在通过重定向重定向遇到奇怪的问题 .

Case 1: 首先清除浏览器历史记录/缓存文件

localhost:3000/login 成功登录后,路由器重定向到 localhost:3000 ,这是预期的 .

注销后,路由器首先重定向到 localhost:3000/# ,然后重定向到 localhost:3000/login .

Case 2: 与案例1的历史

localhost:3000/login 成功登录后,路由器重定向到 localhost:3000/# .

注销后,路由器首先重定向到 localhost:3000/# ,然后重定向到 localhost:3000/login .

我的问题是为什么 localhost:3000/# 出现在上述案例中,我怎么能摆脱它们 .

我的路线设置是

export const LoginRoutes = [
    {
        path: '',
        redirectTo: '/myapp/dashboard',
        pathMatch: 'full'
    },
    {   path: 'login',
        component: LoginComponent
    }
];

export const ProtectedRoutes: RouterConfig = [
    {
        path: '',
        redirectTo: '/myapp',
        pathMatch: 'full'
    },
    {
        path: 'myapp',
        component: RouteDispatcherComponent,
        canActivate: [AuthGuard],
        children: [
            {
                path: '',
                redirectTo: '/myapp/dashboard',
                pathMatch: 'full'
            },
            {
                path: 'dashboard',
                component: DashboardComponent
            }
        ]
    }
]

在我的登录组件中,我使用 this.router.navigate(['/myapp/dashboard']); 导航到我的仪表板页面 .

AuthGuard 就像

canActivate() {
    if (this.authService.isAuthenticated()) {
        return true;
    }
    this.router.navigate(['/login']);
    return false;
}

顺便说一句,这发生在多个浏览器(chrome,firefox,safari)中 .

1 回答

  • 0

    我回来回答我自己的问题 . 事实证明,这不是与路由器设置相关的问题,而是我的html文件中的问题 .

    我有

    <a href="#" (click)="logoutClick($event)">
    

    在我的HTML文件中并且有

    logoutClick(event) {
        this.auth.logout();
        this.router.navigate(['login']);
    }
    

    在相应的ts文件中 .

    所以,'s why it'首先重定向到 localhost:3000/# 然后再重定向到 localhost:3000/login . localhost:3000/# 实际上不是有效路线 . 默认情况下,重新加载整个角度实例并重定向到登录页面 .

    要修复它,要么将html更改为

    <a [routerLink]="['/login']" (click)="logoutClick($event)">
    

    并从logoutClick(event)方法中删除this.router.navigate(['login']);` 或只是将html更改为

    <a (click)="logoutClick($event)">
    

相关问题