3

我们正在使用 Active Directory (Azure AD) v2.0 端点并使用 msal.js 进行登录,并且它反复要求登录

let app = new Msal.UserAgentApplication(
      applicationConfig.clientID,
      'https://login.microsoftonline.com/common', 
      (errorDesc,token,error,tokenType)=>{
      if(token){
        localStorage.setItem(userAdTokenName,token);
         window.location.href='/';
      } 

    },
    {
      redirectUri:redirectUri,
      cacheLocation:'localStorage'
    }
    );

export function login(){
    app.loginRedirect(applicationConfig.scopes);
}

提前致谢!

4

2 回答 2

0

根据这个github 问题UserAgentApplication,包括应用程序重定向到的页面上的 MSAL对象。

// This is weird but Microsoft login redirects back to the site and expects it to create the object before it closes the popup.
// See https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/174
if (location.hash.includes("id_token")) {
  new UserAgentApplication("4ecf3d26-e844-4855-9158-b8f6c0121b50", null, null);
}

一位评论者说他将此代码放在他的componentWillMount方法中。上面的代码片段是从 github 逐字发布的,但我相信对该方法的正确调用includes应该是 on window.location.hash。我试过但无法让它工作,但其他人说这对他们有用。

如果你得到它的工作,请更新你的帖子。我几乎整天都在做这个,还没有弄清楚为什么窗口不会消失。我正在构建一个 SPA,因此从理论上讲,该UserAgentApplication对象位于每个“页面”上。

于 2018-11-15T05:49:59.803 回答
0

您还可以使用每个页面上的 SPFx 扩展,以便现在可以关闭登录弹出窗口。重定向 URL (SPFx/AAD) 必须指定根网站集。

另外,我听说这是某些版本的 msal 的问题。您可以尝试降级到 msal 0.1.3 来解决此问题。

于 2018-07-30T16:42:17.800 回答