各位前輩大家好,
剛接觸JWT,
目前的理解是這樣的,
登入:
client提供id+password → server接收 → DB驗證 → 生成token → token返回給clinet
使用API:
client提供token → server接收 → 驗證token → 取得id → 當作以此id登入成功 → 後續處理
想要問的是
是不是使用JWT就無法防止多設備同時登入?
以前使用session時,在DB紀錄登入時間,這樣就能防止多重登入了,
據我理解,JWT一大特色就是一次認證後,token過期前不用再使用DB,這樣的話還能阻止多重登入嗎?可以的話要如何實做呢?
謝謝各位。
第一次登入:
client提供id+password → server接收 → DB驗證 + DB標記JWT有效期限 → 生成token → token返回給clinet
第二次登入:
client提供id+password → server接收 → DB驗證 + 驗證JWT有效期限 -> 告訴使用者此帳號已經登入過
登入的使用者一樣可以藉由JWT資訊 暢遊Server
JWT 最主要是把使用者資訊變成Token給使用者攜帶,為了便利網頁中資訊傳遞,讓Server不用負擔儲存資料的工作
感謝回答,
這樣確實可以防止第二次的登入。
不過若需求是第二次登入時可以正常登入,
但是會強制登出第一次的登入,
這樣有可能實現嗎?
以前的作法是用cookie存登入時間或亂數,
若跟DB資料不一致的話就強制登入。