我想确保单页应用程序的用户在访问 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/