angular - 如何在 MSAL for Angular 中的访问 token 过期时重定向用户?

标签 angular msal msal.js msal-angular

我想确保单页应用程序的用户在访问 token 过期时被重定向回登录页面。

据我了解,MSAL 会在过期后自动刷新访问 token 。但只有当 token 过期并且用户发出新的 HTTP 请求时,它才会这样做。

是否可以监听 token 过期后立即触发的 MSAL 事件(无需进一步的用户交互)?

如果获取 token 失败,MSAL 会做什么?是否有可能挂接到此事件?

我已经尝试对此进行测试,但我的 msalBroadcastService.msalSubject$ 订阅在 token 过期时没有触发任何事件,我无法模拟获取 token 的失败。

我正在使用 MSAL for Angular 13 和 RxJS7。

最佳答案

我终于找到了我认为正确的方法。

下面的订阅会监听每个 HTTP 请求并发出事件,例如acquireTokenStart 或 acquireTokenSuccess。如果 AccessToken 过期或错误/删除,它会自动使用 RefreshToken 从网络获取新的 AccessToken。如果两个 token 都错误或已删除,则会发出 acquireTokenFailure。这可以用于,例如重定向或注销用户。

 this.msalBroadcastService.msalSubject$.subscribe({
      next: (msalSubject) => {
        if (msalSubject.eventType === 'msal:acquireTokenFailure') {
          // Do something
        }
      },
    });

以上代码在 ngOnInit 中。不要忘记导入 MsalBroadcastService 并将其注入(inject)到构造函数中。

关于angular - 如何在 MSAL for Angular 中的访问 token 过期时重定向用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72660096/

相关文章:

Angular 2网络 worker

angular - 如何在Angular2中默认打开日期选择器?

javascript - 是否每次需要 token 时都需要调用 acquireTokenSilent?

c# - MSAL.Net 没有帐户或登录提示传递给 AcquireTokenSilent 调用

angular - MSAL.js protectedResourceMap - 需要解释将其设置为什么

Blazor WASM AzureB2C 登录回调 404

javascript - 将 ViewChild 用于动态元素 - Angular 2 和 ionic 2

node.js - 获取 http ://localhost: postman

azure-active-directory - 使用 MSAL 实现 AAD 身份验证时,我将使用 navigateToLoginRequestUrl 选项做什么?

node.js - 如何从缓存位置:本地存储中检索msal对象?