Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Jak nakonfigurovat
Pokud MSAL.js ve výchozím nastavení potřebuje přejít z jedné stránky v aplikaci na jinou, znovu se přiřadí window.location, což způsobí přesměrování celého rámce na druhou stránku a způsobí opětovné vykreslení aplikace. Pokud používáte Angular Router, může to být nepopiratelné, protože směrovač povolí navigaci na straně klienta a podle potřeby zobrazí nebo skryje pouze části stránky.
V současné době existuje jeden scénář, kdy MSAL.js přejde z jedné stránky v aplikaci na jinou. Pokud vaše aplikace provádí všechny následující věci, pokračujte ve čtení:
- Vaše aplikace k přihlášení používá tok přesměrování místo automaticky otevíraného toku.
-
PublicClientApplicationje nakonfigurovaný sauth.navigateToLoginRequestUrl: true(výchozí) - Vaše aplikace má stránky, které mohou volat
loginRedirect/acquireTokenRedirectse sdílenýmredirectUri; to znamená, že voláteloginRedirectzhttp://localhost/protecteds redirectUrihttp://localhost
Pokud vaše aplikace provádí všechny výše uvedené věci, můžete přepsat metodu MSAL používá k navigaci importem MsalCustomNavigationClient a voláním setNavigationClient.
POZNÁMKA: Kvůli opravě zabezpečení nebude MsalCustomNavigationClient používat Angular Router pro navigaci na straně klienta, když je navigateToLoginRequestUrl nastaveno na hodnotu true a dochází ke zpracování přesměrování. Jedná se o známý problém, který bude vyřešen v budoucí verzi.
Příklad implementace
Následující příklad ukazuje, jak tento postup implementovat při použití Angular Router. Další informace o Angular Router najdete zde a můžete najít úplnou ukázkovou aplikaci, která ji implementuje pro Angular zde.
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
}
}