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.
Msal-Browser (@azure/msal-browser) od verze 2.4 teď poskytuje rozhraní API událostí, která jsou k dispozici uživatelům naší základní knihovny a knihoven obálky. Tyto události souvisejí s ověřováním a tím, co msAL dělá, a lze je použít v aplikacích k aktualizaci uživatelského rozhraní, zobrazení chybových zpráv atd.
Jak vypadají události
export type EventMessage = {
eventType: EventType;
interactionType: InteractionType | null;
payload: EventPayload;
error: EventError;
timestamp: number;
};
Datová část a chyba jsou EventMessage definovány takto:
export type EventPayload = PopupRequest | RedirectRequest | SilentRequest | SsoSilentRequest | EndSessionRequest | AuthenticationResult | PopupEvent | null;
export type EventError = AuthError | Error | null;
Jak se události generují v prohlížeči msal
Msal-browser má chráněnou funkci emitEventa generuje události v hlavních rozhraních API. Seznam aktuálně vygenerovaných událostí najdete v následující tabulce.
Tady je příklad, jak msal-browser generuje událost s datovou částí nebo s chybou:
this.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Redirect, result);
this.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);
Jak používat rozhraní API událostí
Msal-browser exportuje addEventCallback funkci, která přebírá funkci zpětného volání a lze ji použít ke zpracování vygenerovaných událostí.
Tady je příklad využití vygenerovaných událostí v aplikaci:
const callbackId = msalInstance.addEventCallback((message: EventMessage) => {
// Update UI or interact with EventMessage here
if (message.eventType === EventType.LOGIN_SUCCESS) {
console.log(message.payload);
}
});
Přidání zpětného volání události vrátí ID. Toto ID lze v případě potřeby použít k odebrání zpětného volání pomocí removeEventCallback funkce exportované pomocí msal-browseru:
msalInstance.removeEventCallback(callbackId);
Zpracování chyb
Vzhledem k tomu, jak EventError je definován způsob, může zpracování chyb vygenerovaných událostí vyžadovat ověření, že chyba je správného typu před přístupem ke konkrétním vlastnostem vygenerované chybě. Chybu lze přetypovat AuthError nebo zkontrolovat, zda se jedná o instanci AuthError.
Tady je příklad využívání generované události a přetypování chyby:
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
}
}
});
Získání stavu interakce z událostí
Aktuální stav interakce můžete získat z událostí pomocí rozhraní api getInteractionStatusFromEvent :
Tady je příklad zobrazení zprávy, když neprobíhá žádná interakce:
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);
}
});
Synchronizace přihlášeného stavu napříč kartami a okny
Pokud chcete aktualizovat uživatelské rozhraní, když se uživatel přihlásí k aplikaci nebo z aplikace nebo změní aktivní účet na jiné kartě nebo okně, můžete se přihlásit k odběru LOGIN_SUCCESSLOGOUT_SUCCESS, a ACTIVE_ACCOUNT_CHANGED událostí.
- U přidání a odebrání účtu bude
AccountInfodatová část objektem, který byl přidán nebo odebrán. - U aktivních aktualizací účtu nebude k dispozici žádná datová část.
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
}
});
Tabulka událostí
Jedná se o události, které aktuálně vygeneruje msal-browser.
| Typ události | Description | Typ interakce | Užitečné zatížení | Error |
|---|---|---|---|---|
LOGIN_START |
Volá se loginPopup nebo loginRedirect. |
Popup nebo Redirect |
PopupRequest nebo RedirectRequest | |
LOGIN_SUCCESS |
Úspěšně přihlášeno |
Popup nebo Redirect |
AccountInfo | |
LOGIN_FAILURE |
Chyba při přihlašování |
Popup nebo Redirect |
Chyba nebo chyba ověřování | |
ACQUIRE_TOKEN_START |
AcquireTokenPopup nebo acquireTokenRedirect nebo acquireTokenSilent se nazývá |
Popup nebo Redirect nebo Silent |
PopupRequest nebo RedirectRequest nebo SilentRequest | |
ACQUIRE_TOKEN_SUCCESS |
Úspěšně získaný token z mezipaměti nebo sítě |
Popup nebo Redirect nebo Silent |
AuthenticationResult | |
ACQUIRE_TOKEN_FAILURE |
Chyba při získávání tokenu |
Popup nebo Redirect nebo Silent |
Chyba nebo chyba ověřování | |
ACQUIRE_TOKEN_NETWORK_START |
Zahájení získávání tokenu ze sítě | Silent |
||
SSO_SILENT_START |
Rozhraní API SsoSilent volal | Silent |
SsoSilentRequest | |
SSO_SILENT_SUCCESS |
Jednotné přihlašování bylo úspěšné | Silent |
AuthenticationResult | |
SSO_SILENT_FAILURE |
Selhání jednotného přihlašování | Silent |
Chyba nebo chyba ověřování | |
HANDLE_REDIRECT_START |
HandleRedirectPromise volal | Redirect |
||
HANDLE_REDIRECT_END |
HandleRedirectPromise dokončeno | Redirect |
||
LOGOUT_START |
Odhlašovací volaný |
Redirect nebo Popup |
EndSessionRequest nebo EndSessionPopupRequest | |
LOGOUT_END |
Odhlášení bylo dokončeno. |
Redirect nebo Popup |
||
LOGOUT_SUCCESS |
Úspěšné odhlášení |
Redirect nebo Popup |
EndSessionRequest nebo EndSessionPopupRequest | |
LOGOUT_FAILURE |
Odhlášení se nezdařilo. |
Redirect nebo Popup |
Chyba nebo chyba ověřování | |
ACTIVE_ACCOUNT_CHANGED |
Filtry aktivních účtů, které se změnily na jiné kartě nebo v okně | N/A | N/A | N/A |
INITIALIZE_START |
Inicializace funkce s názvem | N/A | N/A | N/A |
INITIALIZE_END |
Inicializace funkce byla dokončena. | N/A | N/A | N/A |