2016-07-23 89 views
0

我有一個用於用戶身份驗證的應用程序,並遇到了此問題,其中有用戶登錄並且JWT(JsonWebToken)存儲在Cookie中。我在驗證用戶之後保存了cookie。接下來,作爲管理員,當他/她仍然登錄時,從數據庫中刪除該用戶。由於用戶仍然記錄,用戶在瀏覽器中有一個有效的JWT,所以它仍然認爲它存在,因爲我的方式通過webtoken驗證用戶是否登錄。我一直在想如何解決這個問題,但我還沒有能夠提出任何問題。JsonWebToken用戶身份驗證問題

我也在GitHub上發佈了這個問題。

回答

0

一種方法是讓cookie通過設置的到期時間戳到達已經通過的日期。

+0

我可以使exp時間戳1天,但如果我在1小時內刪除用戶,並且用戶將登錄23小時甚至不存在。 – Pete

+0

我不知道具體如何,但是當您刪除用戶時,您修改了Cookie的過期時間。 –

1

看看Invalidating JSON Web Tokens

有幾種技術,當用戶情況已經改變了它的有效期期滿前失效一個JWT令牌,你不能沒有從localStorage的/ cookie的刪除:帳戶刪除/鎖定/暫停,密碼改變,改變的權限,用戶註銷通過管理員:

  1. 令牌黑名單:這是註銷之間&到期時間存儲令牌,標誌過期,檢查它的每一個要求。您需要服務器存儲。您只能包含該ID或使用發佈的時間字段。在上次更新用戶之前發佈的令牌無效

  2. 到期時間短並旋轉它們。每隔幾個請求就發一個新的。問題是保持用戶登錄時,有沒有請求(例如關閉瀏覽器)

其他常用技術:

  • 允許更改用戶唯一的ID,如果帳戶與新的用戶&密碼泄露登錄
  • 包含上次登錄日期以刪除舊令牌
  • 要在用戶更改密碼時使令牌失效,請使用密碼的散列對令牌進行簽名。如果密碼更改,則以前的令牌將自動無法驗證。將此機制與其他感興趣的領域擴展簽署。缺點是它需要訪問數據庫