Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Hoe configureert u
Standaard wordt window.location opnieuw toegewezen wanneer MSAL.js van de ene pagina in uw toepassing naar een andere moet navigeren, wat een volledige frame-omleiding naar de andere pagina veroorzaakt en ertoe leidt dat uw toepassing opnieuw wordt gerenderd. Als u de Angular-router gebruikt, kan dit onherstelbaar zijn omdat de router navigatie aan de clientzijde inschakelt en alleen de onderdelen van de pagina indien nodig weergeeft of verbergt.
Er is momenteel één scenario waarin MSAL.js van de ene pagina in uw toepassing naar een andere navigeert. Als uw toepassing alle volgende dingen doet, gaat u verder met lezen:
- Uw toepassing gebruikt de omleidingsstroom in plaats van de pop-upstroom om u aan te melden
-
PublicClientApplicationis geconfigureerd metauth.navigateToLoginRequestUrl: true(standaard) - Uw toepassing heeft pagina's die mogelijk
loginRedirect/acquireTokenRedirectaanroepen met een gedeelderedirectUri, d.w.z. u roeptloginRedirectaan vanuithttp://localhost/protectedmet een redirectUri vanhttp://localhost
Als uw toepassing al het bovenstaande doet, kunt u de methode overschrijven die MSAL gebruikt om te navigeren door MsalCustomNavigationClient te importeren en setNavigationClient aan te roepen.
OPMERKING: Vanwege een beveiligingscorrectie zal de MsalCustomNavigationClient de Angular Router niet gebruiken om client-side te navigeren wanneer navigateToLoginRequestUrl op true is ingesteld en redirects worden afgehandeld. Dit is een bekend probleem dat in een toekomstige release wordt opgelost.
Voorbeeld van implementatie
In het onderstaande voorbeeld ziet u hoe u dit implementeert wanneer u de Angular Routergebruikt. Meer informatie over de Angular Router vindt u hier en u vindt hier een volledige voorbeeld-app die dit voor Angular implementeert.
import { Component, OnInit, Inject } from '@angular/core';
import { Router } from '@angular/router';
import { Location } from '@angular/common';
import { MsalService, MsalBroadcastService, MSAL_GUARD_CONFIG, MsalGuardConfiguration, MsalCustomNavigationClient } from '@azure/msal-angular';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit, OnDestroy {
constructor(
@Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration,
private authService: MsalService,
private msalBroadcastService: MsalBroadcastService,
private router: Router,
private location: Location
) {
const customNavigationClient = new MsalCustomNavigationClient(this.authService, this.router, this.location);
this.authService.instance.setNavigationClient(customNavigationClient);
}
ngOnInit(): void {
// Additional code
}
}