步骤
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,如有侵权,请联系删除。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
2020-12-08 VUE + TS