簡體   English   中英

匿名用戶使用帶角度和彈簧引導的 firebase 登錄

[英]Anonymous user login using firebase with angular and spring boot

我正在使用 Spring Boot 作為服務器開發 Angular 10 應用程序。 我想使用 firebase 匿名登錄用戶,我將它用於最喜歡的項目等,我需要用戶在第一個后端請求之前登錄。 我添加了 angularfire 依賴項,我匿名登錄用戶並獲得用戶令牌,如下所示:

    this.auth.signInAnonymously()
      .catch(err =>
        //log the error
      );

    this.auth.onAuthStateChanged(user => {
      if (user) {
        const token =  user.getIdToken();

        user.getIdToken(true).then(idToken => {
          this.cookieService.set('Authorization', idToken);
        });
      }
    });

我將令牌添加到 cookie 中,因為我想在后端使用它(並且我不想制作過濾器以將其作為標頭添加到每個請求中):

FirebaseToken decodedToken = FirebaseAuth.getInstance().verifyIdToken(authCookie.get().getValue());

我的問題是,令牌過期一段時間后,在后端我收到以下錯誤:

Firebase ID 令牌已過期。 獲取新的 ID 令牌並重試

我不知道是否可以從后端刷新令牌。 有沒有辦法在令牌過期時處理刷新令牌? (在使用過期令牌調用后端之前)

你能告訴我如何設計沒有太多延遲和重試的匿名登錄嗎?

此致

您應該添加代碼來監聽 ID 令牌的變化,因為它每小時自動刷新一次。 使用onIdTokenChanged

firebase.auth().onIdTokenChanged(function(user) {
  if (user) {
    // User is signed in or token was refreshed.
  }
});

每次由於 ID 令牌更改而觸發回調時,您都需要更新 cookie。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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