MSAL 从函数内 setActiveAccount

问题描述 投票:0回答:1

因此,我正在为我的 React 项目设置 MSAL 和 AAD。事实上,一切都按预期工作,我可以登录、刷新页面(以获取最新的活动令牌)并注销。

但是,当我尝试重构一些代码以使其更具可读性时,我遇到了

setActiveState()
的问题,以下代码在我的 App.js 中有效:

export const msalInstance = new PublicClientApplication(msalConfig);
const accounts = msalInstance.getAllAccounts();
if (accounts.length > 0) {
  msalInstance.setActiveAccount(accounts[0]);
} 

但是,我想将上面的内容重构如下 - 为了在联合函数中处理更多情况:

export const msalInstance = new PublicClientApplication(msalConfig);
function handleResponse(response) {
  if (response !== null) {
    const accountId = response.account.homeAccountId;
  } else {
    const currentAccounts = msalInstance.getAllAccounts();
    if (currentAccounts.length === 0) {
      // no accounts signed-in, attempt to sign a user in
      instance.loginRedirect(loginRequest);
    } else if (currentAccounts.length > 0) {
      msalInstance.setActiveAccount(currentAccounts[0]);
    }
  }
}

msalInstance.handleRedirectPromise().then(handleResponse);

上面的代码能够获取所有当前帐户,并且成功达到

setActiveAccount
,但是没有任何反应 - 即我的活动帐户尚未设置,这意味着我的
<AuthenticationTemplate/>
无法加载。

reactjs azure-active-directory azure-ad-msal
1个回答
0
投票

请仔细检查您的申请、租户和客户标识符。另外,请确保 http://localhost:3000 列在 Azure 应用程序设置中允许的 Web 来源中。

查看此示例以获取进一步指导。

© www.soinside.com 2019 - 2024. All rights reserved.