登录后被重定向到上一个站点后,我正在为路由而苦苦挣扎。例如,如果我没有登录,我将调用“localhost:4200/results”,我将被定向到“localhost:4200?returnUrl”的登录=%2Fresults#登录”。重定向有效,但如果我想在导航栏中导航到“localhost:4200/dashboard”,则它不起作用。它显示“localhost:4200/dashboard” 1 秒,但没有路由,url 仍然显示“localhost:4200/results”。尝试取消订阅。没用...
效果.ts
@Effect()
signInSuccess$ = this.actions$.pipe(
ofType(AuthActions.signInSuccessAction),
map(action => {
const authenticatedUser = action.user;
if (authenticatedUser.competenceCenterMappings.length === 0) {
return openModal({component: CreateCompetenceCenterComponent});
} else {
const returnUrl = this.prevRouteService.redirectUrl;
this.router.events.pipe(
filter(event => event instanceof NavigationEnd),
).subscribe(() => {
this.router.navigateByUrl(returnUrl);
}).unsubscribe();
return closeModal();
}
})
);
auth-guard.ts
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
return combineLatest([
this.store.select(AuthenticationStore.Selectors.isAuthenticated),
this.store.select(AuthenticationStore.Selectors.getUser)
]).pipe(
mergeMap(
([isAuthenticated, authUser]) => isAuthenticated ? this.handleEnvironment(authUser) : this.router.navigate([], {
fragment: 'login',
queryParams: { returnUrl: state.url }
})
)
);