2017-10-09 47 views
0

我想弄清楚如何爲我的React應用程序構建一個基本的登錄/註冊功能。所以我正在考慮創建一個HoC /父類,用於執行諸如登錄和檢查用戶是否登錄等事情。 因此,我現在已經找到了找出用戶是否登錄的最佳方式。我看到的是使用localStorage。但是,任何人都可以訪問它,所以我可以只存儲一個標誌,說isLoggedIn或什麼?我是否需要加密某個標記,如username.password,然後在每個頁面上加載對DB的調用?這似乎有點多。或者有一個missunderstacked的東西?使用本地存儲的反應認證

回答

1

您可以使用JSON Web令牌(JWT)。

當用戶登錄時,請調用後端的說/登錄以根據數據庫檢查密碼。如果成功,則發出一個包含用戶名和角色的JWT(例如,而不是的密碼)。

您可以隨時通過直接用JavaScript驗證令牌的加密簽名(如果可讀內容(例如用戶名)已被更改,則簽名將不再匹配)來通知用戶是否已登錄, 。這樣,在令牌到期之前,您不需要詢問數據庫。

我看到的是使用localStorage。但任何人都可以訪問

不可以,也可以,只有在同一個域中才可以訪問的Cookie數量爲advantage。原則上,一種令牌被盜的方式(例如XSS attacks,或者在您離開時從您的筆記本電腦上的開發工具中複製而來),但是您添加到它的過期時間只會使其有效幾個小時。

+0

雖然在瀏覽器控制檯,我不能做一些像受害者計算機上的localStorage.getItem(),然後在我的電腦上設置值? – user1009698

+1

@ user1009698是的,你可以使用它,直到它到期。與cookie相同的是,這不是localStorage的錯誤:不是'localStorage.getItem(。)',而是'document.cookie'。當你離開時鎖定你的屏幕! – JulienD