#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 для автоматического входа в систему при загрузке страницы. Вы можете использовать этот пример в качестве руководства.