天天看點

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

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

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

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

如果确實過期了,首先調用 handleExpiredToken, 傳回的 Observable 對象,使用該 token,重新發送之前因為 token 過期而失效的請求:createNewRequestWithNewToken:

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

stream 是一個 BehaviorSubject:

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

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

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

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

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

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

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

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

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

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

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

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

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

繼續閱讀