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