Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A(z)
Alapértelmezés szerint, amikor az MSAL.js-nek az alkalmazás egyik oldaláról a másikra kell navigálnia, újra beállítja a window.location elemet, ami a másik oldalra történő, teljes keretet érintő átirányítást eredményez, és emiatt az alkalmazás újra kirenderelődik. Ha az Angular Útválasztót használja, ez nem feltétlenül lehetséges, mivel az útválasztó engedélyezi az "ügyféloldali" navigációt, és szükség szerint csak a lap részeit jeleníti meg vagy rejti el.
Jelenleg van egy forgatókönyv, amelyben MSAL.js az alkalmazás egyik oldaláról a másikra navigál. Ha az alkalmazás a következő műveleteket hajtja végre, folytassa az olvasást:
- Az alkalmazás az előugró folyamat helyett az átirányítási folyamatot használja a bejelentkezéshez
-
PublicClientApplicationkonfigurálva van (auth.navigateToLoginRequestUrl: truealapértelmezett) - Az alkalmazás olyan oldalakkal rendelkezik, amelyek meghívhatják a(z)
loginRedirect/acquireTokenRedirectelemet egy közösredirectUrihasználatával, azaz Ön a(z)loginRedirectelemet a(z)http://localhost/protectedelemből hívja meg,http://localhostredirectUri használatával
Ha az alkalmazás az összes fent említett dolgot elvégzi, felülírhatja azt a metódust, amelyet az MSAL a navigáláshoz használ, a MsalCustomNavigationClient importálásával és a setNavigationClient meghívásával.
MEGJEGYZÉS: Biztonsági javítás miatt a rendszer nem használja az MsalCustomNavigationClient Angulart Router az ügyféloldali navigáláshoz, ha navigateToLoginRequestUrl igaz értékre van állítva, és kezeli az átirányításokat. Ez egy ismert probléma, amely egy későbbi kiadásban lesz megoldva.
Példa implementálásra
Az alábbi példa bemutatja, hogyan implementálhatja ezt az Angular Routerhasználatakor. Az Angular-útválasztóról itt talál további információt, és itt talál egy teljes mintaalkalmazást, amely implementálja ezt az Angularhoz.
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
}
}