步驟
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,如有侵權,請聯系刪除。