抛出“msal:acquireTokenFailure”时要实现什么?

Ros*_*day 5 azure-ad-msal msal.js

我知道这应该很简单,但如果能提供一点帮助,我们将不胜感激;我们对使用工业强度打字稿包都有些陌生。

我们正在构建一个 Angular 应用程序并使用 @azure/msal-angular 库,它在大多数情况下都可以正常工作;遵循教程和示例,通常都有意义。

除了在广播“msal:acquireTokenFailure”事件时要实现什么?

在 AppComponent 的 ngOnInit() 方法中,我们有这一行

    // Subscriptions and redirects are for jwtTokens
    this.subscription = this.broadcastService.subscribe("msal:acquireTokenFailure", () => {
      // ToDo: What should be implemented here?
    });
Run Code Online (Sandbox Code Playgroud)

在 GitHub 页面的一些帖子中,项目贡献者提出了一些类似的建议

    // Subscriptions and redirects are for jwtTokens
    this.subscription = this.broadcastService.subscribe("msal:acquireTokenFailure", () => {
      this.subscription.unsubscribe();
      this.authService.loginRedirect();
    });
Run Code Online (Sandbox Code Playgroud)

就我而言,这将重定向到 AzuerAD 登录屏幕,但会丢失我们试图为其获取令牌的底层调用详细信息。

看起来更有用的(在伪代码中)是这样的

// Subscriptions and redirects are for jwtTokens
    this.subscription = this.broadcastService.subscribe("msal:acquireTokenFailure", () => {
      this.subscription.unsubscribe();

      if (isIE) {
        this.authService.acquireTokenRedirect(userRequest);
      } else {
        this.authService.acquireTokenPopup(userRequest);
      }
    });
Run Code Online (Sandbox Code Playgroud)

问题是,这是一种有效的方法吗?我们从哪里恢复 userRequest 参数?

请不要将我重定向到 Microsoft 文档;我花了几个小时按照相同的链接绕圈子......