2017-05-09 72 views
0

我一直在閱讀關於如何設置JSON Web Tokens以及我發現在客戶端實現身份驗證邏輯的所有示例(例如generator-angular-fullstack)。使用JWT進行身份驗證:服務器還是客戶端?

舉一個例子,設想一個應用程序,用戶只需轉到根地址即可訪問個人儀表板。如果未通過身份驗證,則應將用戶重定向到登錄頁面或登錄頁面。遵循angular intestack生成器的最佳實踐,客戶端首先下載整個Angular應用程序,然後用它來處理身份驗證和路由,必要時重定向到登錄頁面。

假設大多數訪問者甚至沒有帳戶,爲什麼讓他們下載所有的代碼只是爲了最終顯示他們的日誌頁面?

簡單地向非認證用戶提供一個輕量級登錄頁面,並且只對已經擁有有效令牌的用戶使用角度應用程序不是更好嗎? 如果是這樣,我怎麼沒有發現任何實現這種方式的例子?

回答

0

您正面臨着前端應用程序中基於令牌的身份驗證問題之一:在從客戶端到服務器的初始請求中,服務器未知登錄狀態。

如果您的登錄表單是而不是您的Angular應用程序的一部分,這是基於cookie /會話的驗證的常見用例,因爲cookie隨初始請求一起提供。這樣,服務器就知道是否提供角度應用程序或重定向到登錄表單。

但是,如果您的登錄表單是您的角度應用程序的一部分,我在服務整個應用程序時看不到任何問題。登錄後(將用戶名+密碼發送到服務器)後,您會得到一個用於所有進一步請求的令牌。在傳統的單頁面應用程序中,這不包括任何額外的重新加載。

+0

但是JWT可以存儲爲一個cookie(在上面給出的示例中實現)並在第一個請求中發送出去,因此服務器應該能夠判斷該客戶端是否已通過身份驗證。事實上,我沒有看到一旦您的應用程序被加載並授權後,與完全刷新不同的是什麼。無需依賴Angular發送該令牌。至於實用性,假設您有大量的一次性訪問者沒有帳戶。爲這些服務提供精簡的着陸頁將使加載時間更快並節省帶寬。還是我誤解了一些東西? – Funkatic

相關問題