[英]How to redirect a user when the access token expires in MSAL for Angular?
我想確保當訪問令牌過期時,單頁應用程序的用戶被重定向回登錄頁面。
據我了解,MSAL 會在過期后自動刷新訪問令牌。 但只有在令牌過期並且用戶發出新的 HTTP 請求時才會這樣做。
是否可以偵聽令牌過期后立即觸發的 MSAL 事件(無需進一步的用戶交互)?
如果獲取令牌失敗,MSAL 會做什么? 有沒有可能加入這個事件?
我已經嘗試對此進行測試,但是我的 msalBroadcastService.msalSubject$ 訂閱在令牌過期時沒有觸發任何事件,並且我無法模擬獲取令牌的失敗。
我將 MSAL 用於帶有 RxJS7 的 Angular 13。
我終於找到了在我看來是正確的方法。
下面的訂閱監聽每個 HTTP 請求並發出事件,例如acquireTokenStart 或acquireTokenSuccess。 如果 AccessToken 過期或錯誤/刪除,它會自動使用 RefreshToken 從網絡獲取新的 AccessToken。 如果兩個令牌都錯誤或被刪除,則會發出acquireTokenFailure。 這可以用於例如重定向或注銷用戶。
this.msalBroadcastService.msalSubject$.subscribe({
next: (msalSubject) => {
if (msalSubject.eventType === 'msal:acquireTokenFailure') {
// Do something
}
},
});
上面的代碼在 ngOnInit 里面。 不要忘記導入 MsalBroadcastService 並將其注入到構造函數中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.