NodeJS使用JWT

2023-11-12

JWT(jsonwebtoken)

目前最流行的跨域身份验证解决方案

在nodejs中使用

安装

npm install jsonwebtoken --save

使用

  • 1.在路由中引入
var jwt = require('jsonwebtoken');
  • 2.定义一个密钥
const secret = 'nidemiyao'//用于加密
  • 3.定义生成token的函数
	//生成token
//info也就是payload是需要存入token的信息
	function createToken(info) {
	    let token = jwt.sign(info, secret, {
	        //Token有效时间 单位s
	        expiresIn:60 * 60*24
	    })
	return token
}
  • 4.定义验证token的函数
//验证Token
function verifyToken(token) {
    console.log(token)
    return new Promise((resolve, reject) => {
      jwt.verify(token, secret, (error, result) => {
            if(error){
                reject(error)
            } else {
                resolve(result)
            }
      })
    })
}

  • 5.可以设置白名单
    定义一下
//白名单
const whiteList = ['/manage/login']
  • 6.使用
路由名.use((req,res,next) => {
    if(!whiteList.includes(req.url)) {
    	//判断请求头是否携带正确的token
        verifyToken(req.headers.authorization).then(res => {
            next()
        }).catch(e => {
            res.status(401).send('403')//验证失败返回什么
        })
    } else {
        next()
    }
})

场景

常用于登录

通过创建密钥返回给前台,前台进行一个本地保存,再在封装请求中添加该请求头token…即可实现加密!!!

//登陆
路由名.post("/manage/login",(req,res)=>{
    let {user}=req.body;
        let sql=`select *from admin where uname='${user.username}' and upassword='${user.password}'`;
        conn.query(sql,(err,result,fields)=>{
            if(err){
                return "失败";
            }
            console.log(result)
            if(result.length!==0){
                let token =createToken(user)
                res.send({"result":result,"token":token});
            }else{
                res.send({"result":result});
            }
        })
});

这样就实现简单的使用了~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NodeJS使用JWT 的相关文章

随机推荐

  • 数据中台产品【数据服务中心】【含代码说明等】

    链接 https pan baidu com s 1 WNnt690 WWf8BX8uvNaKw 提取码 uscrDataCenterTodo CDH hbase zk 部署和配置 代码发布 presto redis集群 cacheclou
  • Vscode运行C++程序修改代码运行不生效

    修改代码运行不生效 问题描述 问题描述 以以下代码为例 具体问题就是每次修改代码之后运行发现都没有生效 比如第一次编译运行打印了 Hello 我在添加新语句后运行程序发现修改并未生效 网上找解决方法大多是下面这种 点击左下角设置标志图 gt
  • 什么是ajax ?ajax的原理是什么?ajax的优缺点是什么?ajax请求的五个步骤和ajax的基本语法。(简述)

    一 什么是ajax Ajax即Asynchronous Javascript And XML 异步JavaScript和XML ajax不是新的编程语言 而是一种使用现有标准的新方法 ajax是一种在无需重新加载整个网页的情况下 能够更新部
  • 识别视频声音内容添加字幕

    最近有看到这个需求 想着怎么实现一下 做到这个功能主体上也就几步 声音识别生成字幕 识别视频内的声音内容转成字幕文件 这一步有可能需要先将音频从视频中剥离出来 可以用ffmpeg来实现 声音转化成字幕的方法 网上查到可用的方法有以下几种 百
  • vue-架构与思想-MVVM模式和MVC模式的区别

    今天又重新捡起Vue 想用vue做个自己的应用 作为一个后台服务的se 对前台一直是很苦恼的 然后按着这个思路就干起来了 当然就遇到了这个问题 MVVM到底是什么 MVC当然是清楚的 那么找了些资料 学习以记之 与君共享 1 MVVM模式和
  • (二十七)admin-boot项目之集成websocket实时推送消息

    文章目录 二十七 集成websocket实时推送消息 一 rabbitmq推送方案 二 websocket方案 mica mqtt core 三 mica mqtt方案测试 二十七 集成websocket实时推送消息 基础项目地址 http
  • 使用Settings Sync扩展同步VSCode配置

    声明 本文全部内容为原创内容 禁止在未经授权的情况下进行任何二次创作和修改 转载请注明出处 摘要 VSCode是一个广泛使用的开源代码编辑器 因为支持Windows Mac OS X和Linux的多平台的特性而广受欢迎 由于大量扩展的支持
  • 一文读懂使用STM32驱动 LCD1602 液晶显示屏(基于Mbed Studio平台)

    索引 一 总览 1 1 简介 1 2 LCD1602主要参数 二 管脚介绍 三 时序图 3 1 写操作时序 3 2 读操作时序 3 3 时序时间参数 四 命令与数据 以使用4位数据模式为例 4 1 前期准备 4 2 写入命令 命令表 4 3
  • 蓝牙Mesh LPN节点

    选择LPN模式的原因 能有效的降低产品功耗 比如 一个温湿度传感器产品 需要超过设定阈值才会从上送数据 这样就没有长时间唤醒时间 就无法接收到网关下发的设置数据 这时候就需要LPN模式 LPN的节点正常还是超过阈值才会上报数据 然后会过一段
  • react 精华之react-router .HashRouter 还是 BrowserRouter . 动态路由是根据变量决定这个路由是否需要进行

    随着 AJAX 技术的成熟 现在单页应用 Single Page Applicatio 已经是前端网页界的标配 名为 单页 其实在设计概念上依然是多页的界面 只不过从技术层面上页之间的切换是没有整体网页刷新的 只需要做局部更新 要实现 单页
  • LLVM SSA 介绍

    最近做研究碰到了一个难题 需要对程序变量按生命期进行重命名 考虑到 SSA 中一个变量在不同的程序分支中赋值时会进行重命名 因此打算以此作为参考 看看能否采取同样的方法达到目的 由于之前看到的文档中都说 LLVM IR 是 SSA 形式的
  • 如何管理软件开发项目中,需求频繁的变更。

    在开发项目过程中 用户随时会提出一些新的需求 要求开发人员解决 这些需求的提出 有时在开发阶段中有时在开发阶段后 这种在需求分析的两个相邻子阶段中 或者在迭代周期的需求分析中 后一段或周期的需求分析结果与前一次不一致 我们把这种不一致称为需
  • 【项目经验】:项目中下拉框数据太多造成页面卡顿(二)

    一 项目需求 下拉框下拉列表数据是由后端返回的 而且他会变化 所以数据不是写死的而且数据量大 上一篇博客http t csdn cn sSNTa我们是用的数据懒加载的方式 这次我们使用远程搜索的方式解决这个问题 二 用到的组件方法介绍 fi
  • 思维导图使用技巧:手把手教你怎么画思维导图 #CSDN博文精选# #系统化学习# #IT技术# #知识图谱#

    大家好 我是小C 又见面啦 文章过滤器 精选大咖干货 助力学习之路 5天20篇CSDN精选博文带你掌握系统化学习方法 专栏将挑选有关 系统化学习方法 的20篇优质文章 帮助大家掌握更加科学的学习方法 在这里 你将收获 快速掌握系统化学习的理
  • C++打印日期

    题目描述 给出年分m和一年中的第n天 算出第n天是几月几号 输入描述 输入包括两个整数y 1 lt y lt 3000 n 1 lt n lt 366 输出描述 可能有多组测试数据 对于每组数据 按 yyyy mm dd的格式将输入中对应的
  • 【数据结构】二叉搜索树

    二叉搜索树的概念 二叉搜索树又称为二叉排序树 它或者是一棵空树 或者是具有以下性质的二叉树 若它的左子树不为空 则左子树上所有结点的值都小于根结点的值 若它的右子树不为空 则右子树上所有结点的值都大于根结点的值 它的左右子树也分别是二叉搜索
  • windows-cmd下添加、删除和修改静态路由

    1 添加一条路由表 route add 192 168 20 0 mask 255 255 255 0 192 168 4 1 metric 2 if 2 命令说明 添加一条路由记录 所有到192 168 20 0 24网段的数据包 都通过
  • 【计算机网络系列】数据链路层①:数据链路层的三个基本问题(封装成帧、透明传输和差错检测)

    数据链路层最重要的内容是 数据链路层的点对点信道和广播信道的特点 以及这两种信道所使用的协议 PPP协议以及CSMA CD协议 的特点 数据链路层的三个基本问题 封装成帧 透明传输和差错检测 以太网MAC层的硬件地址 适配器 转发器 集线器
  • oracle无法减小列长度,中国港湾扩展表单分配时调整字段后保存时报错,无法正常维护表单定义...

    版本号 7 0 4 业务场景 如下 中国港湾扩展表单分配时调整字段后保存时报错 无法正常维护表单定义 异常提示 异常信息 添加业务实体的时候出错 导致错误的应用程序或对象的名称 Genersoft Platform RuntimeADP C
  • NodeJS使用JWT

    JWT jsonwebtoken 目前最流行的跨域身份验证解决方案 在nodejs中使用 安装 npm install jsonwebtoken save 使用 1 在路由中引入 var jwt require jsonwebtoken 2