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.
MSAL Angular v2 uppdaterar vår version av MSAL för Angular till den senaste versionen av MSAL Common och har inbyggt stöd för moderna versioner av Angular (9–12) och rxjs (6).
Den här guiden visar de ändringar som krävs för att migrera ett befintligt program från @azure/msal-angular v1 till v2.
Dokumentation specifikt för MSAL Angular v2 finns här.
Installation
Den första grundläggande ändringen av MSAL Angular v2 är att det inte längre använder kärnpaketet msal , utan omsluter @azure/msal-browser paketet som ett peer-beroende.
Avinstallera först alla tidigare versioner av MSAL som för närvarande används.
Så här installerar du @azure/msal-browser och @azure/msal-angular:
npm install @azure/msal-browser @azure/msal-angular@latest
Ändringar som bryter kompatibiliteten i @azure/msal-browser@2
@azure/msal-browser@2 innehåller ett antal icke-bakåtkompatibla ändringar från msal@1.x. Många av dessa bör abstraheras bort från ditt program, men det finns några som kräver kodändringar.
MsalModule.forRoot tar nu emot tre argument
@azure/msal-angular Tidigare accepterade två konfigurationsobjekt via MsalModule.forRoot(), ett för kärnbiblioteket och ett för @azure/msal-angular. Detta har ändrats för att ta in en instans av MSAL, samt två Angular-specifika konfigurationsobjekt.
- Det första argumentet är MSAL-instansen. Detta kan tillhandahållas som en fabriksfunktion som instansierar MSAL eller genom att skicka in MSAL-instansen tillsammans med konfigurationer.
- Det andra argumentet är ett
MsalGuardConfigurationobjekt som angerinteractionTypesamt ett valfrittauthRequestoch ett valfrittloginFailedRoute. - Det tredje argumentet är ett
MsalInterceptorConfigurationobjekt som innehåller värdena förinteractionType, enprotectedResourceMapoch en valfriauthRequest.unprotectedResourceMaphar blivit inaktuell.
Mer information finns i vårt konfigurationsdokument och specifika dokument för MsalInterceptor och MsalGuard . Du kan också se våra uppdaterade exempel på hur du skickar dessa konfigurationsobjekt.
Logger
-
loggerhar nu angetts via konfigurationen för MSAL-instansen undersystem.loggerOptions, som innehåller enloggerCallback,piiLoggingEnabledochlogLevel, i stället för en instans av enlogger.loggerkan också ställas in dynamiskt med hjälp avMsalService.setLogger(). Selogger documentationför mer information och exempel på användning.
API-ändringar
- Metoderna
acquireTokenochlogintar nu olika begärandeobjekt som parametrar. Mer information finns i msal.service.ts . - Sändningshändelser genererar nu ett
EventMessageobjekt, i stället för bara strängar. Se Angular-exemplet för ett exempel på hur du implementerar. - Applikationer som använder
Redirect-metoder bör importeraMsalRedirectComponentoch bootstrap-koden tillsammans medAppComponenti sin app.component.ts, som hanterar alla omdirigeringar. Applikationer som inte kan göra detta bör implementera metodenhandleRedirectObservable(och låta den köras vid varje sidinläsning), vilket fångar resultatet av omdirigeringsåtgärder. Mer information finns i omdirigeringsdokumentationen .
MSAL Interceptor
- Mer information om hur du konfigurerar den aktuella
MsalInterceptoroch om skillnaderna mellan v1 och v2 finns i MsalInterceptor-dokumentationen.
MSAL Guard
- Se vår MsalGuard-dokumentation för mer information om hur du konfigurerar den aktuella
MsalGuardsamt om skillnaderna mellan v1 och v2.
Accounts
- Vi rekommenderar att du prenumererar på den
inProgress$Observable och filtrerar efterInteractionStatus.Noneinnan du hämtar kontoinformation. Detta säkerställer att alla interaktioner har slutförts innan kontoinformation hämtas. Se vårt exempel för ett exempel på den här användningen. - När du hämtar konton rekommenderar vi att du använder
getAccountByHomeId()ochgetAccountByLocalId(), som är tillgängliga på MSAL-instansen.getAccount()är nugetAccountByUsername(), men bör vara ett sekundärt val, eftersom det kan vara mindre tillförlitligt och är endast för enkelhetens skull. -
getAllAccounts()är också tillgängligt på MSAL-instansen. Se dokumentationen för@azure/msal-browserför mer information om kontometoder. - Dessutom kan du nu hämta och ställa in aktiva konton med
getActiveAccount()ochsetActiveAccount(). Mer information finns i våra vanliga frågor och svar .
Angular 9+ och rxjs@6
MSAL Angular förväntar sig nu att ditt program har skapats med @angular/core@>=9, @angular/common@>=9, rxjs@6. Precis som med MSAL Angular v1 krävs inte rxjs-compat.
Steps:
- Installera nyare versioner av Angular och rxjs:
npm install @angular/core @angular/common rxjs - Avinstallera
rxjs-compat(förutsatt att det inte behövs för andra bibliotek):npm uninstall rxjs-compat
Samples
Vi har sammanställt grundläggande exempelprogram för Angular 9, 10, 11 och 12. Dessa exempel visar grundläggande konfiguration och användning, och kommer att förbättras och läggas till stegvis.
Här finns en lista över MSAL Angular v2-exempel och de funktioner som visas.