angular - Hvordan sende parameter til guard?
Jeg har prosjektbasert Angular 12.
Jeg trenger å sikre en rute basert på en parameter som kalles token:
export const authenticationRoutes = [
{
path: 'reset-password/token/:token',
component: ResetPasswordShellComponent,
canActivate: [ResetPasswordGuard]
}
];
ResetPasswordGuard er en vakt som gjør kall til webtjeneste og skal sende tokenverdien som er en del av stien:
path: 'reset-password/token/:token'
Mitt spørsmål er om det finnes en måte å sende tokenverdien fra stien til guarden (ResetPasswordGuard) slik at den blir sendt til webtjenesten?
Svar #1
Når vi implementerer grensesnittet CanActivate på ResetPasswordGuard, tar funksjonen canActivate 2 parametere, hvorav den første er ActivatedRouteSnapshot...
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): boolean {
// your logic goes here
console.log('[ResetPasswordGuard]', next.params); // <-- This should print {token: 'somevalue'}
....
....
}
Så man kan enkelt lese stive parametere fra det ved å bruke...
const tokenInPath = next.params.token || ''
Ved å bruke en ActivatedRouteSnapshot har man tilgang til alle dataene i URL-en. ActivatedRouteSnapshot gir også Observable-grensesnitt for å lese/motta ønsket informasjon (stive parametere, spørringsparametere osv...).
