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.
Msal-Browser (@azure/msal-browser) ab Version 2.4 stellt jetzt Ereignis-APIs bereit, die Benutzern unserer Kernbibliotheks- und Wrapperbibliotheken zur Verfügung stehen. Diese Ereignisse beziehen sich auf die Authentifizierung und die Funktionsweise von MSAL und können in Anwendungen verwendet werden, um die Benutzeroberfläche zu aktualisieren, Fehlermeldungen anzuzeigen usw.
Wie Ereignisse aussehen
export type EventMessage = {
eventType: EventType;
interactionType: InteractionType | null;
payload: EventPayload;
error: EventError;
timestamp: number;
};
Die Nutzlast und der Fehler in EventMessage sind wie folgt definiert:
export type EventPayload = PopupRequest | RedirectRequest | SilentRequest | SsoSilentRequest | EndSessionRequest | AuthenticationResult | PopupEvent | null;
export type EventError = AuthError | Error | null;
Gibt an, wie Ereignisse im msal-browser ausgegeben werden
Msal-browser verfügt über eine geschützte Funktion emitEventund gibt Ereignisse in wichtigen APIs aus. Eine Liste der aktuell ausgegebenen Ereignisse finden Sie in der folgenden Tabelle.
Nachfolgend sehen Sie ein Beispiel dafür, wie msal-browser ein Ereignis mit einer Nutzlast oder mit einem Fehler ausgibt:
this.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Redirect, result);
this.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);
Verwenden der Ereignis-API
Msal-browser exportiert die Funktion, die addEventCallback in einer Rückruffunktion verwendet wird, und kann verwendet werden, um ausgegebene Ereignisse zu verarbeiten.
Nachfolgend sehen Sie ein Beispiel dafür, wie Sie die ausgegebenen Ereignisse in Ihrer Anwendung nutzen können:
const callbackId = msalInstance.addEventCallback((message: EventMessage) => {
// Update UI or interact with EventMessage here
if (message.eventType === EventType.LOGIN_SUCCESS) {
console.log(message.payload);
}
});
Durch das Hinzufügen eines Ereignisrückrufs wird eine ID zurückgegeben. Diese ID kann verwendet werden, um den Rückruf bei Bedarf mithilfe der removeEventCallback von msal-browser exportierten Funktion zu entfernen:
msalInstance.removeEventCallback(callbackId);
Behandlung von Fehlern
Aufgrund der definitionsweise definierten Methode EventError müssen Fehler, die mit einem Ereignis ausgegeben werden, überprüft werden, dass der Fehler vom richtigen Typ ist, bevor auf bestimmte Eigenschaften für den ausgegebenen Fehler zugegriffen wird. Der Fehler kann in AuthError eine Instanz von AuthError.
Nachfolgend sehen Sie ein Beispiel für die Verwendung eines ausgegebenen Ereignisses und das Umwandeln des Fehlers:
const callbackId = msalInstance.addEventCallback((message: EventMessage) => {
// Update UI or interact with EventMessage here
if (message.eventType === EventType.LOGIN_FAILURE) {
if (message.error instanceof AuthError) {
// Do something with the error
}
}
});
Abrufen des Interaktionsstatus von Ereignissen
Sie können den aktuellen Interaktionsstatus aus Ereignissen abrufen, indem Sie die getInteractionStatusFromEvent-API verwenden:
Nachfolgend sehen Sie ein Beispiel für die Anzeige einer Meldung, wenn keine Interaktionen ausgeführt werden:
const callbackId = msalInstance.addEventCallback((message: EventMessage) => {
const status = EventMessageUtils.getInteractionStatusFromEvent(message);
// Update UI or interact with EventMessage here
if (status === InteractionStatus.None) {
console.log(message.payload);
}
});
Synchronisieren des angemeldeten Zustands über Registerkarten und Fenster hinweg
Wenn Sie Ihre Benutzeroberfläche aktualisieren möchten, wenn sich ein Benutzer bei Ihrer App anmeldet oder die App abmeldet oder das aktive Konto auf einer anderen Registerkarte oder einem anderen Fenster ändert, können Sie die LOGIN_SUCCESSEreignisse und LOGOUT_SUCCESSACTIVE_ACCOUNT_CHANGED Ereignisse abonnieren.
- Bei Kontozufügungen und Entfernungen ist die Nutzlast das
AccountInfoObjekt, das hinzugefügt oder entfernt wurde. - Für aktive Kontoaktualisierungen gibt es keine Nutzlast.
msalInstance.addEventCallback((message: EventMessage) => {
if (message.eventType === EventType.LOGIN_SUCCESS) {
// Update UI with new account
} else if (message.eventType === EventType.LOGOUT_SUCCESS) {
// Update UI with account logged out
} else if (message.eventType === EventType.ACTIVE_ACCOUNT_CHANGED) {
const accountInfo = msalInstance.getActiveAccount();
// Update UI with new active account info
}
});
Ereignisverzeichnis
Dies sind die Ereignisse, die derzeit von msal-browser ausgegeben werden.
| Ereignistyp | Description | Interaktionstyp | Nutzlast | Fehler |
|---|---|---|---|---|
LOGIN_START |
LoginPopup oder loginRedirect wird aufgerufen |
Popup oder Redirect |
PopupRequest oder RedirectRequest | |
LOGIN_SUCCESS |
Erfolgreich angemeldet |
Popup oder Redirect |
AccountInfo | |
LOGIN_FAILURE |
Fehler beim Anmelden |
Popup oder Redirect |
AuthError oder Fehler | |
ACQUIRE_TOKEN_START |
AcquireTokenPopup oder acquireTokenRedirect oder acquireTokenSilent wird aufgerufen |
Popup oder Redirect oder Silent |
PopupRequest oder RedirectRequest oder SilentRequest | |
ACQUIRE_TOKEN_SUCCESS |
Erfolgreich erworbenes Token aus Dem Cache oder Netzwerk |
Popup oder Redirect oder Silent |
AuthenticationResult | |
ACQUIRE_TOKEN_FAILURE |
Fehler beim Abrufen von Token |
Popup oder Redirect oder Silent |
AuthError oder Fehler | |
ACQUIRE_TOKEN_NETWORK_START |
Starten des Abrufens von Token aus dem Netzwerk | Silent |
||
SSO_SILENT_START |
SsoSilent-API aufgerufen | Silent |
SsoSilentRequest | |
SSO_SILENT_SUCCESS |
SsoSilent erfolgreich | Silent |
AuthenticationResult | |
SSO_SILENT_FAILURE |
SsoSilent fehlgeschlagen | Silent |
AuthError oder Fehler | |
HANDLE_REDIRECT_START |
HandleRedirectPromise aufgerufen | Redirect |
||
HANDLE_REDIRECT_END |
HandleRedirectPromise abgeschlossen | Redirect |
||
LOGOUT_START |
Abmelden aufgerufen |
Redirect oder Popup |
EndSessionRequest oder EndSessionPopupRequest | |
LOGOUT_END |
Abmelden abgeschlossen |
Redirect oder Popup |
||
LOGOUT_SUCCESS |
Abmeldeerfolg |
Redirect oder Popup |
EndSessionRequest oder EndSessionPopupRequest | |
LOGOUT_FAILURE |
Abmeldefehler |
Redirect oder Popup |
AuthError oder Fehler | |
ACTIVE_ACCOUNT_CHANGED |
Aktive Kontofilter, bei denen sich auf einer anderen Registerkarte oder in einem anderen Fenster geändert hat | N/A | N/A | N/A |
INITIALIZE_START |
Initialize-Funktion aufgerufen | N/A | N/A | N/A |
INITIALIZE_END |
Initialisieren der Funktion abgeschlossen | N/A | N/A | N/A |