У меня React SPA, и я использую msal для аутентификации пользователей Microsoft с помощью loginRedirect. После входа в систему я получаю токен доступа без вывода сообщений, используя acquTokenSilent для вызова веб-API. При сбое получения токена доступа и необходимости взаимодействия я использую acquTokenRedirect.
Когда я использую acquTokenRedirect, я вижу следующее:
1. Пользователь перенаправлен на login.microsoftonline.com.
2. Ответ 302 возвращается с заголовком Location, который содержит URL перенаправления + токен доступа.
3. Запрос GET на мой URL перенаправления - мой обратный вызов вызывается.
4. Еще одно перенаправление в мой корень приложения.
При последнем перенаправлении мое приложение обслуживается снова, и я теряю токен доступа из состояния приложения. Кроме того, я потерял возможность перенаправлять пользователя на определенный маршрут.
Получение токена доступа:
getAccessToken = async () => {
let accessTokenRequest = { scopes: [...]
};
try {
var accessTokenResponse = await
this.authAgent.acquireTokenSilent(accessTokenRequest);
return accessTokenResponse.accessToken;
} catch (error) {
const errorCode = error.name;
if (errorCode === "consent_required" || errorCode === "interaction_required") {
await this.authAgent.acquireTokenRedirect(accessTokenRequest);
}
throw error;
}
};