2017-12-18 213 views
0

我努力學習ExpressJS,所以我創建一個簡單的網站,登錄功能... 我想用火力地堡的帳戶和數據庫(公司的FireStore)ExpressJS和火力地堡驗證,初學者查詢

我的問題是Firebase身份驗證似乎只是客戶端,後端不知道客戶端是否已登錄或不登錄... 我想限制HTML呈現給客戶端,如果他沒有登錄,但我可以'噸弄清楚如何檢查他是否登錄

我知道我可以使用

firebase.auth().onAuthStateChanged(function(user){ 
    if (!user){ 
    window.location.replace("/login"); 
}}); 
在客戶端

,看起來不「安全」,足以給我,我想這樣做在ExpressJS

在火力的文檔,我發現這個約Verifying ID Tokens ,但我不明白,首先是我將如何將令牌發送給ExpressJS,其次,我如何在請求路由前發送它?

回答

0

您必須將ID令牌傳遞給您的後端。然後您按照https://firebase.google.com/docs/auth/admin/verify-id-tokens#retrieve_id_tokens_on_clients中的說明驗證ID令牌。

如果您的應用程序是單個頁面應用程序,則每次發送請求時都會在請求標頭中傳遞標識令牌。

如果您正在構建更傳統的Web應用程序,您可以通過Cookie設置ID令牌並檢索它並在每個請求後在您的後端簽入。你必須做到以下幾點:

  1. 主動致電getIdToken(true)令牌到期之前刷新ID令牌。令牌通常會持續一個小時。您需要在到期前刷新它並更新cookie,以便重定向仍然會考慮用戶登錄。

  2. 如果用戶在一段時間後(超過一小時)訪問您的網站,該Cookie將會過期,您將重定向到您設置onAuthStateChanged的臨時頁面,如果用戶已登錄,請致電getIdToken(),更新cookie並重定向到預定目標,否則請考慮用戶已註銷。