在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 我试图导航。
我找不到为什么在用户成功登录后没有导航回“结帐”页面。