SAP Spartacus 因為 refresh token 重新整理令牌過期後顯示使用者重新登入頁面的邏輯
阿新 • • 發佈:2021-08-16
在 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的原創文章,盡在:"汪子熙":