Как я могу перенаправить на предыдущую страницу после входа в Google в Angular8?
Я сохраняю текущий URL в localStorage и использую его для перехода назад, когда пользователь успешно вошел в систему. Но это не навигация.
Это мой AuthService с функцией входа в систему.
export class AuthService {
constructor(private afAuth: AngularFireAuth , private route: ActivatedRoute) {}
login() {
let returnUrl = this.route.snapshot.queryParamMap.get('returnUrl') || '/';
localStorage.setItem('returnUrl', returnUrl);
this.afAuth.auth.signInWithRedirect(new firebase.auth.GoogleAuthProvider());
}
}
Это мой AuthGuardService
export class AuthGuardService implements CanActivate {
constructor(private auth: AuthService, public router: Router) {}
canActivate(route, state: RouterStateSnapshot) {
return this.auth.user$.pipe(map(user => {
if (user) { return false; }
this.router.navigate(['/login'], { queryParams : {returnUrl : state.url}});
return true;
}));
}
}
Я использую app.component.tsдля перехода на предыдущую страницу.
export class AppComponent {
constructor(private auth: AuthService, router: Router) {
auth.user$.subscribe(user => {
if(user){
let returnUrl = localStorage.getItem('returnUrl');
router.navigate([returnUrl]);
}
});
}
}
Это мой app.module.ts, в котором я определил маршруты.
RouterModule.forRoot([
{ path: "", component: HomeComponent },
{ path: "check-out", component: CheckOutComponent, canActivate: [AuthGuardService] },
//...
])
Я пытаюсь получить доступ к "извлечению"страница из адресной строки. Затем он перенаправляет на страницу входа, как я хочу. (Когда пользователь не входит в систему и когда пользователь пытается получить доступ к странице «извлечения», он направляется на страницу входа.) Мой URL выглядит следующим образом с параметрами маршрутизатора.
http://localhost:4200/login?returnUrl=%2Fcheck-out
Но послелогин, он не перенаправляет обратно на страницу «извлечения».
После входа пользователя мой URI выглядит следующим образом
http://localhost:4200/login?returnUrl=%2Fcheck-out
Он не изменился. Но в app.component.ts я пытаюсь ориентироваться.
Я не могу понять, почему после успешного входа в систему пользователь не возвращается на страницу «извлечение».