javascript - Cum pot redirecționa utilizatorul către o altă pagină după autentificare - Angular


În proiectul la care lucrez, este obișnuit să trimiți linkuri către detaliile unei achiziții prin e-mail, dar atunci când utilizatorul deschide linkul, i se cere autentificarea în sistem, iar după ce se loghează, este redirecționat către pagina principală (panoul sistemului) și nu către detaliile achiziției.

if (admin) {
 that.router.navigate(['/main-panel'], { replaceUrl: true });
} else (seller) {
 that.router.navigate(['/main-panel-seller'], { replaceUrl: true });
}

Singura validare pe care o fac este unde o să trimit acest utilizator, există vreo modalitate de a verifica URL-ul anterior? Sau undeva unde pot găsi informațiile despre acest URL stocate.

Răspuns #1

Când redirecționezi utilizatorul către pagina de autentificare, poți transmite URL-ul original ca parametru și să navighezi către el când este autentificat

De exemplu: în gardul de autentificare (metoda canActivate()):

this.router.navigate(['login'], { queryParams: { returnUrl: state.url }});

și în controler (metoda ngOnInit()):

this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/'; 
this.router.navigateByUrl(this.returnUrl);

(Sursă)