Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Så här konfigurerar
Som standard, när MSAL.js behöver navigera från en sida i programmet till en annan, tilldelar den om window.location, vilket leder till en fullständig omdirigering av ramen till den andra sidan och gör att programmet renderas om. Om du använder Angular Router kan detta vara oläsligt eftersom routern aktiverar navigering på "klientsidan" och visar eller döljer endast delar av sidan efter behov.
För närvarande finns det ett scenario där MSAL.js navigerar från en sida i programmet till en annan. Om ditt program gör alla följande saker, fortsätt läsa:
- Ditt program använder omdirigeringsflödet i stället för popup-flödet för att logga in
-
PublicClientApplicationhar konfigurerats medauth.navigateToLoginRequestUrl: true(standard) - Ditt program har sidor som kan anropa
loginRedirect/acquireTokenRedirectmed en deladredirectUri, dvs. du anroparloginRedirectfrånhttp://localhost/protectedmed en redirectUri påhttp://localhost
Om programmet gör allt ovan kan du åsidosätta den metod som MSAL använder för att navigera genom att MsalCustomNavigationClient importera och anropa setNavigationClient.
Obs! På grund av en säkerhetskorrigering MsalCustomNavigationClient använder inte Angular Router för att navigera på klientsidan när navigateToLoginRequestUrl är inställt på true och hantering av omdirigeringar. Det här är ett känt problem som kommer att åtgärdas i en framtida version.
Exempel på implementering
Exemplet nedan visar hur du implementerar detta när du använder Angular Router. Mer information om Angular Router finns här, och du hittar en fullständig exempelapp som implementerar detta för Angular här.
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
}
}