2017-01-16 70 views
2

我的web應用程序允許不同的用戶使用不同憑據在同一臺計算機上的不同選項卡/瀏覽器中登錄(使用signInWithEmailAndPassword)。我通過致電firebase.initializeApp(config, 'appName'+new Date().getTime())爲每個登錄實現此目的Firebase RememberMe功能

當用戶關閉選項卡或重新加載(在window.onbeforeunload)我呼籲.auth().signOut()註銷他。

我現在想要一個RemeberMe功能添加到我的應用程序頁面,這是一個tickbox,如果(且僅當)選中,將允許下在同一臺機器和用戶名登錄不提供密碼即使機器例如在此期間重新啓動。

這怎麼能實現?

我在想什麼是(當記住我時)在存儲在cookie中的客戶端上生成一個令牌並在db上維護一個將令牌鏈接到密碼的表,這有兩個問題,第一個所有的密碼保存在數據庫是壞的,第二密碼需要被髮回到客戶端也是不好的。

有什麼更好的選擇?

+0

回憶是默認行爲。你想禁用它嗎?如果您收聽['onAuthStateChanged'](https://firebase.google.com/docs/reference/js/firebase.auth.Auth#onAuthStateChanged),您應該看到自動重新驗證(即記住)。 – cartant

+0

忘了提及我正在調用'.auth()。signOut()'在頁面重新加載(更新後的問題)。也許我需要的只是如果勾選了勾選框,就不會呼叫登出。我希望用戶確定他是否希望會話在默認情況下保持不變。 – kofifus

+0

是的,這將做到這一點,並聽取'onAuthStateChanged'來決定登錄是否短路。 – cartant

回答