Как я могу перенаправить на предыдущую страницу после входа в Google в Angular 8? - PullRequest
0 голосов
/ 07 октября 2019

Как я могу перенаправить на предыдущую страницу после входа в 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 я пытаюсь ориентироваться.

Я не могу понять, почему после успешного входа в систему пользователь не возвращается на страницу «извлечение».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...