Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Msal-Browser (@azure/msal-browser) a partir da versão 2.4 agora fornece APIs de evento que estão disponíveis para usuários de nossas bibliotecas principais e bibliotecas de wrapper. Esses eventos estão relacionados à autenticação e ao que a MSAL está fazendo e podem ser usados em aplicativos para atualizar a interface do usuário, mostrar mensagens de erro e assim por diante.
Como são os eventos
export type EventMessage = {
eventType: EventType;
interactionType: InteractionType | null;
payload: EventPayload;
error: EventError;
timestamp: number;
};
O conteúdo e o erro EventMessage são definidos da seguinte maneira:
export type EventPayload = PopupRequest | RedirectRequest | SilentRequest | SsoSilentRequest | EndSessionRequest | AuthenticationResult | PopupEvent | null;
export type EventError = AuthError | Error | null;
Como os eventos são emitidos no msal-browser
O msal-browser tem uma função emitEventprotegida e emite eventos em APIs principais. Para obter a lista de eventos emitidos no momento, consulte a tabela abaixo.
Aqui está um exemplo de como o msal-browser emite um evento com um conteúdo ou com um erro:
this.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Redirect, result);
this.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);
Como usar a API de eventos
O msal-browser exporta a addEventCallback função que recebe uma função de retorno de chamada e pode ser usada para processar eventos emitidos.
Aqui está um exemplo de como você pode consumir os eventos emitidos em seu aplicativo:
const callbackId = msalInstance.addEventCallback((message: EventMessage) => {
// Update UI or interact with EventMessage here
if (message.eventType === EventType.LOGIN_SUCCESS) {
console.log(message.payload);
}
});
Adicionar um retorno de chamada de evento retornará uma ID. Essa ID pode ser usada para remover o retorno de chamada, se necessário, usando a removeEventCallback função exportada pelo msal-browser:
msalInstance.removeEventCallback(callbackId);
Tratamento de erros
Devido à maneira EventError definida, o tratamento de erros emitidos com um evento pode exigir a validação de que o erro é do tipo correto antes de acessar propriedades específicas no erro emitido. O erro pode ser convertido AuthError ou verificado se é uma instância de AuthError.
Aqui está um exemplo de como consumir um evento emitido e converter o erro:
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
}
}
});
Obtendo status de interação de eventos
Você pode obter o status de interação atual de eventos usando a API getInteractionStatusFromEvent :
Aqui está um exemplo de exibição de uma mensagem quando não há interações em andamento:
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);
}
});
Sincronizando o estado conectado entre guias e janelas
Se você quiser atualizar sua interface do usuário quando um usuário fizer logon ou sair do seu aplicativo ou alterar a conta ativa em uma guia ou janela diferente, você poderá assinar o e LOGOUT_SUCCESSACTIVE_ACCOUNT_CHANGED os LOGIN_SUCCESSeventos.
- Para adições e remoções de conta, o conteúdo será o
AccountInfoobjeto que foi adicionado ou removido. - Para atualizações de conta ativa, não haverá conteúdo
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
}
});
Tabela de eventos
Esses são os eventos atualmente emitidos pelo msal-browser.
| Tipo de evento | Description | Tipo de Interação | Conteúdo | Erro |
|---|---|---|---|---|
LOGIN_START |
LoginPopup ou loginRedirect é chamado |
Popup ou Redirect |
PopupRequest ou RedirectRequest | |
LOGIN_SUCCESS |
Conectado com êxito |
Popup ou Redirect |
AccountInfo | |
LOGIN_FAILURE |
Erro ao fazer logon |
Popup ou Redirect |
Erro ou AuthError | |
ACQUIRE_TOKEN_START |
AcquireTokenPopup ou acquireTokenRedirect ou acquireTokenSilent é chamado |
Popup ou Redirect ou Silent |
PopupRequest ou RedirectRequest ou SilentRequest | |
ACQUIRE_TOKEN_SUCCESS |
Token adquirido com êxito do cache ou da rede |
Popup ou Redirect ou Silent |
AuthenticationResult | |
ACQUIRE_TOKEN_FAILURE |
Erro ao adquirir token |
Popup ou Redirect ou Silent |
Erro ou AuthError | |
ACQUIRE_TOKEN_NETWORK_START |
Iniciando a aquisição de token da rede | Silent |
||
SSO_SILENT_START |
API do SsoSilent chamada | Silent |
SsoSilentRequest | |
SSO_SILENT_SUCCESS |
SsoSilent foi bem-sucedido | Silent |
AuthenticationResult | |
SSO_SILENT_FAILURE |
Falha no SsoSilent | Silent |
Erro ou AuthError | |
HANDLE_REDIRECT_START |
HandleRedirectPromise chamado | Redirect |
||
HANDLE_REDIRECT_END |
HandleRedirectPromise concluído | Redirect |
||
LOGOUT_START |
Logoff chamado |
Redirect ou Popup |
EndSessionRequest ou EndSessionPopupRequest | |
LOGOUT_END |
Logoff concluído |
Redirect ou Popup |
||
LOGOUT_SUCCESS |
Sucesso de logoff |
Redirect ou Popup |
EndSessionRequest ou EndSessionPopupRequest | |
LOGOUT_FAILURE |
Falha no logoff |
Redirect ou Popup |
Erro ou AuthError | |
ACTIVE_ACCOUNT_CHANGED |
Filtros de conta ativos em que foram alterados em uma guia ou janela diferente | N/A | N/A | N/A |
INITIALIZE_START |
Inicializar função chamada | N/A | N/A | N/A |
INITIALIZE_END |
Inicializar a função concluída | N/A | N/A | N/A |