2016-08-05 24 views
6

Używam uwierzytelniania oauth do logowania użytkownika. Po zalogowaniu się użytkownika zacznij od adresu URL. Adres URL podobny do tego: http://xxx/callback#access_token=xxx. następnie przekieruj na inną stronę. Używam this.router.navigateByUrl do przekierowania, tag hash został usunięty, ale kiedy kliknę link inny, fragment hasha pojawi się ponownie. Jak mogę trwale usunąć fragment tokenu skrótu?Usuń fragment z adresu stałego na stałe

Przykład:

po użyciu logowania w // xxx/zwrotnej # access_token = xxx

przekierować do // xxx/home

następnie kliknij linka, adres URL to // xxx/linkA # access_token = xxx

spodziewać url jest // xxx/Linka

Odpowiedz

2

nie wiem jak przekierować ale zakładam to spowodowane sposobem używasz.

Jednym ze sposobów, aby zresetować fragment jest

<a routerLink="path" fragment=""> 

(nie testowane sobie jeszcze).

z kodu

let tree = this.router.navigate(['path'], {relativeTo: this.route, queryParams: ''}); 

Zobacz także https://angular.io/docs/ts/latest/api/router/index/Router-class.html#!#createUrlTree-anchor

+0

Dzięki, zaraz po przekierowaniu logowania, pierwszym adresem URL jest URL wywołania zwrotnego OAuth. Przekierowuję przez kod nie przez znacznik html –

+0

Zaktualizowałem swoją odpowiedź. –

1

Należy umieścić useHash równą false na przywóz swojej app.module

@NgModule({ 
    bootstrap: [ App ], 
    declarations: [App], 
    imports: [ 
    .... 
    RouterModule.forRoot(ROUTES, { useHash: false }) 
    ], 
    providers: [] 
}) 

umieszczenie go na false zatrzyma go z użyciem HashLocationStrategy który jest domyślny w RouterModule.forRoot function

2

mam ten sam problem , moje rozwiązanie jest po pobraniu access_token, można ustawić: window.location.hash = ''

To działa na mnie

0

Jeśli na przykład za pomocą auth0 w ich doc robią:

this.auth0.parseHash({ _idTokenVerification: false }, (err, authResult) => { 
    if (authResult && authResult.accessToken && authResult.idToken) { 
     window.location.hash = ""; 
    } 
}); 

Zamiast zrobić:

this.auth0.parseHash({ _idTokenVerification: false }, (err, authResult) => { 
    if (authResult && authResult.accessToken && authResult.idToken) { 
     this.router.navigate["/home"] 
    } 
}); 

To usunie całe hash