Node.js中實現token是否過期來判斷登錄狀態


步驟

1、下載jwt(jsonwebtoken)

在你項目的cmd中輸入如下命令,安裝jwt

npm install jsonwebtoken

2、寫代碼

我這里是新建了一個util文件夾,里面有個token.js文件

在這里插入圖片描述
代碼:

/*
 * @Author: Poker_旭
 * @Descripttion: token解密與加密
 * @version: 1.52
 * @Date: 2021-02-04 20:43:40
 */
const jwt = require('jsonwebtoken');	//引入jwt包

let encrypt = (data, time) => {
  /**
   * @name: 加密函數
   * @param {
   *    *data:  要加密的數據
   *    *time:  過期的時間
   * }
   * @return {*token:加密信息}
   */

  return jwt.sign(data, 'token', { expiresIn: time });
}

let decrypt = (token) => {
  /**
   * @name: 解密函數
   * @param {*token:  要解密的token}
   * @return {
   *    *id:  用戶id,便於其他接口使用
   *    *token: 用於作為判斷token是否過期或者有效的標識
   * }
   */

  try {
    let data = jwt.verify(token, 'token');
    return {
      gadID: data.gadID,
      token: true
    }
  } catch (err) {
    return {
      gadID: err,
      token: false
    }
  }
}

module.exports = {	//將這兩個加密函數和解密函數導出去
  encrypt,
  decrypt
}

加密函數中的.sign方法有三個參數

  • 第一個是要加密的數據;

  • 第二個是密鑰(secret),這個是一個string類型 的變量,名字你可以隨便取,我的理解是我們將第一個參數加密,這樣就是一把鎖,而第二個參數就是這把鎖的鑰匙,就像你去五金店買鎖一樣,老板會同時給你鎖和對應的鑰匙的,因為你解鎖的時候也是又要鎖,又要鑰匙,也就是說這個第二個參數是為了解密的時候准備的,在這里相當於給這個鑰匙起個名字而已。

  • 第三個是一個配置對象,其中一個配置項就是expiresIn,意思就是這把鎖的持續時間,60就是60秒,即一分鍾;60 * 60就是60 * 60秒,即一個小時,但是一小時還可以用’1h’來表示,更多配置如下:
    在這里插入圖片描述

3、登錄接口使用加密

像我這里,假如登錄成功的化話,我就向前端發送一個加密后的token在這里插入圖片描述
這是加密后的數據
在這里插入圖片描述

4、其他接口使用解密

在這里插入圖片描述
這是解密成功后的數據:
在這里插入圖片描述

這是解密失敗后的數據,因為時間過期了:在這里插入圖片描述

*最后說明一點,加密函數中的那個第一個參數是json對象,要看清楚,如:

{
id: 1 //這個是正確的
}

{
“id”: 1 //這個是錯誤的
}

一個有引號,一個沒有引號!

本文轉自 https://blog.csdn.net/m0_46694056/article/details/113704698,如有侵權,請聯系刪除。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM