Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
So konfigurieren
Standardmäßig weist MSAL.js, wenn es von einer Seite in Ihrer Anwendung zu einer anderen navigieren muss, window.location neu zu, was zu einer vollständigen Umleitung des Frames auf die andere Seite führt, wodurch Ihre Anwendung neu gerendert wird. Wenn Sie den Angular-Router verwenden, kann dies möglicherweise unerwünscht sein, da der Router clientseitige Navigation ermöglicht und nur die erforderlichen Teile der Seite je nach Bedarf ein- oder ausblendet.
Derzeit gibt es ein Szenario, in dem MSAL.js von einer Seite in Ihrer Anwendung zu einer anderen navigieren. Wenn Ihre Anwendung alle folgenden Aktionen ausführt, lesen Sie weiter:
- Ihre Anwendung verwendet den Umleitungsfluss anstelle des Popupflusses, um sich anzumelden.
-
PublicClientApplicationist mitauth.navigateToLoginRequestUrl: true(Standard) konfiguriert. - Ihre Anwendung hat Seiten, die
loginRedirect/acquireTokenRedirectmit einer gemeinsamenredirectUriaufrufen können, d. h. Sie rufenloginRedirectvonhttp://localhost/protectedmit einer redirectUri vonhttp://localhostauf
Wenn Ihre Anwendung alle oben genannten Schritte ausführt, können Sie die Methode MSAL zum Navigieren überschreiben, indem Sie die MsalCustomNavigationClient Datei importieren und aufrufen setNavigationClient.
HINWEIS: Aufgrund einer Sicherheitskorrektur verwendet MsalCustomNavigationClient das Angular-Router nicht für die clientseitige Navigation, wenn navigateToLoginRequestUrl auf „true“ festgelegt ist und Umleitungen verarbeitet werden. Dies ist ein bekanntes Problem, das in einer zukünftigen Version behoben werden wird.
Beispielimplementierung
Im folgenden Beispiel wird gezeigt, wie Sie dies bei Verwendung von Angular Routerimplementieren. Weitere Informationen zum Angular-Router finden Sie hier, und Sie finden hier eine vollständige Beispiel-App, die dies für Angular implementiert.
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
}
}