当我尝试使用Microsoft Azure AD在生产网站上调用登录时,我得到一个BrowserAuthError: Interaction is currently in progress
。我一辈子都想不出我做错了什么。这是我用于生产和开发的同一段代码。唯一的区别是clientId
、redirecturl
和postLogoutRedirectUri
的配置发生了变化。我在localhost或staging上没有遇到过这种情况。
我已经按照文档中的解决方案在一定程度上,但它仍然不工作。这是我目前的代码库
const LoginLayout = () => {
const navigate = useNavigate();
const { instance, accounts, inProgress } = useMsal();
const account = useAccount(accounts[0] || {});
const auth_token = useSelector(state => state.auth);
const dispatch = useDispatch();
const isAuthenticated = useIsAuthenticated();
console.log(auth_token.token);
const handleLogin = async () => {
if (!isAuthenticated && inProgress === InteractionStatus.None) {
await instance.loginRedirect();
}
}
useEffect(() => {
if (account) {
instance.acquireTokenSilent({
scopes: config.azure.auth.scopes,
account: account
}).then((response) => {
if(response) {
//console.log("hi "+accounts.length);
const authToken = response.accessToken;
console.log(authToken);
dispatch(setToken(authToken));
}
});
if (accounts.length > 0){
navigate("/overview");
}
}
}, [account, instance]);
return (
<>
<div className="block w-full">
{
accounts.length > 0 ? null
: inProgress === "login" ?
<button
type="submit"
disabled
onClick={handleLogin}
>
<p>Login</p>
<h1><IoSyncOutline className="text-xl animate-spin" /></h1>
</button>
: <button
type="submit"
onClick={handleLogin}
>
<p>Login</p>
<h1><IoArrowForward className='text-xl' /></h1>
</button>
}
</div>
</>
)
}
下面是用于生产的Azure AD配置config.azure
。值得注意的是,我使用相同的ID作为生产配置的客户端和租户ID
const azureAD = {
auth: {
clientId: "507772e4-",
redirecturl: ["https://usmartinvoiceadmin.example.net"],
postLogoutRedirectUri: "https://usmartinvoiceadmin.example.net",
scopes: [
"api://db7641cc-/access_as_user"
],
authority: "https://login.microsoftonline.com/507772e4-"
},
cache: {
cacheLocation: 'sessionStorage',
storeAuthStateInCookie: true,
},
}
我真的很感激任何帮助
1条答案
按热度按时间p3rjfoxz1#
BrowserAuthError: interaction_in_progress. Microsoft Azure Active Directory
表示另一个交互式Azure Active Directory(AAD)身份验证流已在进行中。下面是我用来解决和能够登录没有任何错误的代码
启动开发服务器
结果