1. 程式人生 > 其它 >SAP Spartacus 因為 refresh token 重新整理令牌過期後顯示使用者重新登入頁面的邏輯

SAP Spartacus 因為 refresh token 重新整理令牌過期後顯示使用者重新登入頁面的邏輯

在 auth.interceptor.ts 裡判斷,token 是否過期:

isExpiredToken: 通過伺服器端返回的錯誤型別判斷。

如果確實過期了,首先呼叫 handleExpiredToken, 返回的 Observable 物件,使用該 token,重新發送之前因為 token 過期而失效的請求:createNewRequestWithNewToken:

stream 是一個 BehaviorSubject:

this.oAuthLibWrapperService.refreshToken, 這個方法重新整理的是 Access Token. 如果失敗,說明 refresh Token 也過期了,此時先呼叫第 135 行的程式碼,handleExpiredRefreshToken,先處理 refresh token 的過期問題。

refresh access token: 需要傳舊的 refresh token,但是 response 裡也返回了新的 refresh token.

Spartacus 顯示 "Your session has expired. Please login again." 的邏輯:

如果 refresh token 也過期了,只能重新登入了。

this.authService.coreLogout, 首先登出,然後 this.routingService.go({ cxRoute: 'login'});

把使用者重定向到登入頁面:

最後顯示 session expired 的錯誤提示訊息,key 為:httpHandlers.sessionExpired

更多Jerry的原創文章,盡在:"汪子熙":