步骤

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,如有侵权,请联系删除。

posted on   ygunoil  阅读(868)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
历史上的今天:
2020-12-08 VUE + TS
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示