2016-09-17 58 views
0

我在後面運行了一個模擬expressjs服務器,並在前端運行了ember-simple-auth-token插件並使用了ember-ember-simple-auth。我正在使用JWT令牌。我正在嘗試確定發送我的用戶信息的最佳方式是什麼。通常,當用戶提交他們的憑證時,我創建一個新的令牌,將其副本存儲在數據庫中(我正在使用mongodb),將其發送到前端,然後使用令牌獲取信息用戶信息。我有一個/ auth/token(它認證併發送令牌,複製並存儲在數據庫中)&/current_user路由,它在初始登錄時被調用,它使用令牌並獲取用戶信息。尋找關於前端/後端用戶身份驗證的一些建議

簡單地通過單獨的路由發送令牌的初始有效載荷中的用戶信息會更好嗎?我是否應該在數據庫中存儲一份副本,以便進行比較和檢索用戶信息?

令牌刷新的優點是什麼?

回答

0

您正在使用Jwt-Auth進行身份驗證。 - 根據我發送用戶憑證後的知識,如果憑證正確,您將使用令牌進行響應,否則發送錯誤。

- 爲什麼你要在db中保存令牌? 你將發送令牌給客戶端(無狀態)。如果客戶端請求數據,那麼我們需要檢查令牌。如果驗證,則返回適當的響應,否則返回令牌錯誤。

- 爲什麼需要令牌刷新?爲了安全目的,使用 。每次響應後都要更換令牌。 TTL您的代幣將會有效一段時間(比如60分鐘)。之後它將無效。

這就是智威湯遜的工作原理。

+0

這裏是我設置它。用戶輸入他們的用戶名/密碼,我給他們發送一個令牌。現在我有一個名爲/ current_user的路由,當用戶獲取他的令牌時,它會自動調用/ current_user,我使用該令牌來驗證要發送的用戶信息(因爲我在數據庫中有一個令牌副本, ,併發送「當前用戶」信息)。簡單地在初始有效載荷中發送用戶信息會更有意義嗎?我應該解碼令牌而不是進行比較並將數據發送回前端? – Horizon

+0

我猜我在問你怎麼知道要發送什麼,除非你有參考的東西? – Horizon

+0

請通過此鏈接。 https://github.com/tymondesigns/jwt-auth/wiki/Authentication $ user = JWTAuth :: parseToken() - > toUser();給出用戶數據。然後你可以從中檢查用戶類型。不需要在db中保存標記(你沒有做到這一點)。實際上,令牌包含用戶和時間戳記等的詳細信息。(編碼)。請檢查您的案例如何從令牌獲取數據。 – Harsha

相關問題