Бесконечный цикл с образцом реакции библиотеки MSAL

#reactjs #loops #msal #infinite

Вопрос:

Я пытаюсь легко войти в систему пользователя, не имея кнопки входа, так как она будет размещена в Azure. Но заканчивается бесконечным циклом с ошибкой:

 interaction_in_progress: Interaction is currently in progress. 
Please ensure that this interaction has been completed before calling an interactive API.  
For more visit: aka.ms/msaljs/browser-errors.
 

Пример кода вывода страницы измененный образец машинописного текста из https://github.com/AzureAD/microsoft-authentication-library-for-js:

 export const PageLayout = (props: any) => {
    const { instance,accounts,inProgress } = useMsal();
    if(instance.getActiveAccount() == null)
    {
        console.log('account ='   instance.getActiveAccount());
        instance.loginRedirect(loginRequest);
    }
    console.log('count ='   instance.getAllAccounts().length);
    console.log('active ='   instance.getAllAccounts());
    return (
        <>
            <Navbar bg="primary" variant="dark">
                <a className="navbar-brand" href="/">MS Identity Platform</a>
                {/* <SignInSignOutButton/> */}
            </Navbar>
            <h5 className="sample-header">Welcome to the Microsoft Authentication Library For Typescript - React Quickstart</h5>
            <br/>
            <br/>
            {props.children}
        </>
    );
};
 

Ответ №1:

Этот вопрос рассматривается здесь: https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/3667

Предлагается использовать крючок проверки подлинности useMsalAuthentication или компонент MsalAuthenticationTemplate для автоматического входа в систему при загрузке страницы. Вы можете использовать этот пример в качестве руководства.