簡體   English   中英

當訪問令牌在 MSAL for Angular 中過期時如何重定向用戶?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM