带有AD b2c的aurelia应用程序托管在Azure上,重定向回Edge和Firefox登录

时间:2018-05-29 11:53:17

标签: firefox aurelia microsoft-edge azure-ad-b2c msal

我有一个Aurelia应用程序,使用Msal JavaScript库对Azure B2C进行身份验证 它托管在Azure应用服务上,它在Chrome中工作正常,但在Edge和Firefox中,我会在应用启动时重定向回Azure B2C登录屏幕。

这是我的主要内容:

aurelia.start().then((a) => {
  let auth: Auth = a
    .container
    .get(Auth);

  setTimeout(() => {
    auth
      .isAuthenticated()
      .then(() => {
        a.setRoot();
        return;
      })
      .catch((e) => {
        auth.login();
      });
  }, 2000);

这是isAuthenticated方法:

isAuthenticated() {
  return new Promise((resolve, reject) => {
    let cachedUser = this
    .clientApplication
    .getUser();

  if (cachedUser == null) {
    this.authenticated = false;
    return reject();
  }

  let token = this._getTokentInternal();
  if (token) {
    this.authenticated = true;
    return resolve();
  } else {

    return reject();
  }
 });
}

当我使用Aurelia cli在Localhost上运行时,这三种浏览器都能正常工作,但是当我发布到azure时,即使azure登录成功,Edge和Firefox也会继续从isAuthenticated方法获得拒绝的promise响应重定向登录。
还有其他人遇到过这个问题吗? 任何人都可以指出我正确的方向来解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

似乎我的登录方法清除了window.location.hash,我删除了该行,它现在似乎正在工作