因此,我正在为我的 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/>
无法加载。
请仔细检查您的申请、租户和客户标识符。另外,请确保 http://localhost:3000 列在 Azure 应用程序设置中允许的 Web 来源中。
查看此示例以获取进一步指导。