從多個方面詳細闡述JWT退出登錄

一、JWT退出登錄概述

JWT(JSON Web Token)是一種輕量級的認證和授權機制,常用於RESTful API服務中。用戶在登錄成功後,伺服器會對用戶進行認證並生成一個JWT返回給客戶端,客戶端在每次請求時需要帶上JWT,服務端通過校驗JWT來確定該用戶的身份和許可權。

但是,當用戶需要退出登錄時,客戶端和服務端都需要清除該JWT。本文將從多個方面詳細闡述JWT如何退出登錄。

二、清除Token

當用戶註銷或退出登錄時,客戶端需要清除本地存儲的JWT。

//客戶端代碼示例
localStorage.removeItem("jwtToken");

服務端不需要做出任何改變,因為JWT是存放在客戶端的。

三、JWT如何退出登錄

1. JWT的過期時間

為了增強JWT的安全性,通常會設置一個過期時間,一旦超過這個時間,客戶端需要重新獲取JWT。因此,退出登錄可以通過設置JWT的過期時間來實現。

//服務端代碼示例
const token = jwt.sign({ //生成JWT
  user_id: 123,
  exp: Math.floor(Date.now() / 1000) + (60 * 60), //設置過期時間
}, 'jwt_secret_key');

當用戶退出登錄時,服務端可以設置JWT的過期時間為當前時間戳,這樣既可以強制清除JWT,也可以避免JWT被惡意利用。

2. JWT的黑名單

為了增強JWT的可控性,可以創建一個JWT黑名單來存儲已經失效的JWT,當客戶端請求時,服務端可以檢查該JWT是否在黑名單中。

//服務端代碼示例
const blacklist = [];

app.post('/logout', function (req, res) {
  const { token } = req.body;
  blacklist.push(token); //將該JWT加入黑名單
  res.send('Logout Successfully');
});

app.get('/user', function (req, res) {
  const { token } = req.headers;
  if (blacklist.indexOf(token) !== -1) { //若該JWT在黑名單中,禁止訪問
    res.status(401).send('Token Expired');
  } else {
    //獲取用戶信息
  }
});

當用戶退出登錄時,客戶端向服務端發送一個請求,將該JWT加入黑名單中。當客戶端再次請求時,服務端會檢查該JWT是否在黑名單中,若在,則拒絕該請求。

3. JWT撤銷機制

為了進一步增強JWT的可控性,並且避免新的JWT被惡意利用,可以引入JWT的撤銷機制。該機制允許管理員撤銷某個用戶的JWT,當客戶端請求時,服務端檢查該JWT是否在撤銷列表中。

//服務端代碼示例
const revocationList = [];

app.post('/revoke', function (req, res) {
  const { user_id } = req.body;
  revocationList.push(user_id); //將該用戶的JWT撤銷
  res.send('Revoke Successfully');
});

app.get('/user', function (req, res) {
  const { token } = req.headers;
  const decoded = jwt.verify(token, 'jwt_secret_key');
  if (revocationList.indexOf(decoded.user_id) !== -1) { //若該用戶的JWT已被撤銷,禁止訪問
    res.status(401).send('Token Revoked');
  } else {
    //獲取用戶信息
  }
});

管理員可以通過發送一個請求來撤銷某個用戶的JWT。當客戶端再次請求時,服務端會檢查該JWT對應的用戶是否在撤銷列表中,若在,則拒絕該請求。

四、總結

JWT的退出登錄需要清除Token以及對JWT的處理。通過設置JWT的過期時間、創建JWT的黑名單和引入JWT撤銷機制,可以增強JWT的可控性和安全性。

原創文章,作者:FOVAT,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/369123.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
FOVAT的頭像FOVAT
上一篇 2025-04-12 13:00
下一篇 2025-04-12 13:00

相關推薦

發表回復

登錄後才能評論