簡體   English   中英

Angular2:成功登錄和注銷將重定向到localhost:3000 /#

[英]Angular2: successful login and logout get redirected to localhost:3000/#

我將Angular2 rc.4(router 3.0.0-beta.2)與PathLocationStrategy一起使用。

我遇到了與計算機重定向有關的怪異問題。

情況1:首先清除瀏覽器歷史記錄/緩存的文件

localhost:3000/login成功登錄后,路由器將按預期重定向到localhost:3000

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

案例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)中。

我回來回答自己的問題。 事實證明,這不是與路由器設置有關的問題,而是我的html文件中的問題。

我有

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

在我的html文件中

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

在相應的ts文件中。

因此,這就是為什么它首先重定向到localhost:3000/#然后重定向到localhost:3000/login localhost:3000/#絕對不是有效路由。 默認情況下,整個角度實例將重新加載並重定向到登錄頁面。

要解決此問題,請將html更改為

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

並刪除this.router.navigate(['login']); 從logoutClick(event)`方法或簡單地將html更改為

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM