Express接口案例 使用jsonwebtoken

一、jsonwebtoken的使用

jsonwebtoken官方文档

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

const jwt = require('jsonwebtoken')
// 以同步的方式,生成jwt
// const token = jwt.sign({
//     foo: 'bar'
// }, 'zepzepep')// 以异步的方式,生成jwt
const token = jwt.sign({foo: 'bar'
}, 'zepzepep', (err, token) => {if(err) {return console.log('生成token失败!')}console.log(token)
})// 以同步的方式,验证jwt
// const ret = jwt.verify('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmb28iOiJiYXIiLCJpYXQiOjE2Mjc5OTI5MTd9.XkR-DLthQLFxwsNKj5Ex8hSUaFGlHia_zJtm2leziSk'
//             ,'zepzepep')
// console.log(ret)// 以异步的方式,验证jwt
const ret = jwt.verify('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmb28iOiJiYXIiLCJpYXQiOjE2Mjc5OTI5MTd9.XkR-DLthQLFxwsNKj5Ex8hSUaFGlHia_zJtm2leziSk','zepzepep', (err, ret) => {if(err) {return console.log('token解析失败!')}console.log(ret)})

二、用户登录-生成token并发送到客户端

2.1 将回调函数形式的方法转成promise形式

利用nodejs内置的util模块的promisify()函数

在这里插入图片描述

const jwt = require('jsonwebtoken')
const { promisify } = require('util')// 把sign()回调函数转换成支持promise的sign()形式
exports.sign = promisify(jwt.sign)
exports.verify = promisify(jwt.verify)// jwt.decode() // 不做验证,将token直接进行解析
exports.decode = promisify(jwt.decode)

在这里插入图片描述
在这里插入图片描述

三、使用中间件统一处理JWT身份认证

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

const { verify } = require('../util/jwt.js')
const { jwtSecret } = require('../config/config.default.js')
const { User } = require('../model/index.js')module.exports = async (req, res, next) => {// 从请求头获取 token 数据var token = req.headers['authorization']token = token ? token.split('Bearer ')[1] : nullif(!token) {return res.status(401).end()}// 验证token是否有效try {const decodedToken = await verify(token, jwtSecret)console.log(decodedToken)const user = await User.findById(decodedToken.userId)req.user = usernext()} catch (err) {return res.status(401).end()}// 无效 -> 响应401// 有效 -> 把用户信息读取出来挂载到 req 请求对象上// 继续往后执行
}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

四、JWT过期时间和接口测试工具自动设置添加Token数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470362.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php 日期转毫秒_【小技巧】 各种日期操作方法汇总

虽然现在处理日期方面已经有了很成熟的也很好用的库,例如(momentjs和date-fns),但是在实际开发中,我们有时候可能并不需要整个库。所以我就在下面整理了在前端开发时对日期时间的各种操作,也算是比较全的了。其中一部分来自自己&a…

JavaScript事件使用指南

事件流 事件流描述的是从页面中接收事件的顺序,IE和Netscape提出来差不多完全相反的事件流的概念,IE事件流是事件冒泡流,Netscape事件流是事件捕获流。事件冒泡 IE的事件流叫做事件冒泡,即事件开始时由最具体的元素(文档中嵌套最深…

Express接口案例——完成文章增删改查接口

一、创建文章的Model var mongoose require(mongoose) const baseModel require(./base-model.js) const Schema mongoose.Schemaconst articleSchema new mongoose.Schema({title: {type: String,required: true},description: {type: String,required: true},// 文章内容…

2016.07.24

马上就到七月份的最后一个星期了,自从毕业以后,感觉日子过的好快啊。 距离过年也只有6个月的时间了,其实也就五个月的时间了。五个月的时间,要完成自我的突破 突破方向: 1.linux:最起码的操作应该会吧&…

python ttk.notebook_python – 删除Ttk Notebook标签虚线

我正在尝试制作一个看起来不像tkinter应用程序的tkinter应用程序.我正在使用ttk笔记本,当选中时,标签在文本周围有一条小虚线.它看起来很糟糕,我找不到使用样式或配置删除它的方法.这是一个截图,以澄清:编辑代码(我不认为它会非常有用,因为我实际上只是想删除一个默…

Express接口案例——完成文章评论相关的接口

一、评论的Model {"comment": {"id": 1,"createdAt": "2016-02-18T03:22:56.637Z","updatedAt": "2016-02-18T03:22:56.637Z","body": "It takes a Jacobian","author": {"us…

ACdream1157 Segments(CDQ分治 + 线段树)

题目这么说的&#xff1a; 进行如下3种类型操作&#xff1a;1&#xff09;D L R(1 < L < R < 1000000000) 增加一条线段[L,R]2&#xff09;C i (1-base) 删除第i条增加的线段&#xff0c;保证每条插入线段最多插入一次&#xff0c;且这次删除操作一定合法3) Q L R(1 &…

通过set方式注入的bean为null_Spring 注入集合

注入集合你已经看到了如何使用 value 属性来配置基本数据类型和在你的 bean 配置文件中使用标签的 ref属性来配置对象引用。这两种情况下处理奇异值传递给一个 bean。现在如果你想传递多个值&#xff0c;如 Java Collection 类型 List、Set、Map 和 Properties&#xff0c;应该…

Express与传统Web应用(服务端渲染、art-template模板引擎、配置静态资源托管)

一、服务端渲染相关的概念 什么是渲染&#xff1f; 例如对于我们前端开发者来说最常见的一种场景就是&#xff1a;请求后端接口数据&#xff0c;然后将数据通过模板绑定语法绑定到页面中&#xff0c;最终呈现给用户。 数据&#xff1a; 模板&#xff1a; 渲染&#xff08;…

税收分类编码2020_增值税开票系统你会吗?2020最新开票(金税盘版)图文教程详细版...

做会计的都或多或少的涉及到增值税&#xff0c;增值税也算是我们税务里面占比比较大的&#xff0c;那么增值税发票怎么开&#xff1f;增值税开票软件怎么操作&#xff1f;你都会吗&#xff1f;你曾经会是不是都忘记了&#xff1f;今天会计君和大家分享一份完整的增值税发票开票…

传统Web应用案例(采用服务端渲染)

一、准备静态页面 https://www.expressjs.com.cn/resources/middleware/errorhandler.html 静态页面&#xff1a; https://github.com/gothinkster/realworld-starter-kit/blob/master/FRONTEND_INSTRUCTIONS.md 二、提取控制器模块 三、用户注册的表单提交 3.1 同步方式提…

【miscellaneous】北斗短报文

北斗系统最大的特色在于有源定位和短报文特色服务&#xff0c;不止解决了中国有无卫星导航系统的问题&#xff0c;还能将短信和导航结合&#xff0c;是中国北斗卫星导航系统的独特发明&#xff0c;也是一大优势。 北斗的短报文功能&#xff0c;在国防、民生和应急救援等领域&am…

teamviewer无法建立连接原因未知_3389远程无法连接的5种原因分析

3389无法连接的5种原因分析1、服务器在内网。2、做了tcp/ip筛选。先执行下面cmd命令&#xff1a;cmd /c regedit -e c:1.reg HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesTcpip&#xff0c;导出注册表里关于TCP/IP筛选的第一处cmd /c regedit -e c:2.reg HKEY_LOCAL_MACHINE…

Express框架实现原理

一、Express 源码的目录结构 首先&#xff0c;会去package.json项目&#xff08;包&#xff09;描述文件中寻找main属性的值&#xff0c; main&#xff1a;入口文件。这个main的值就是入口文件所在的路径。 这里并没有配置main属性的值&#xff0c;默认会去找index.js文件作为…

Java中的流程控制语句

if语句 if语句 : if&#xff08;条件表达式&#xff09;{ 执行语句&#xff1b; } if..else语句&#xff1a;       if&#xff08;条件表达式&#xff09;{ 执行语句&#xff1b; }else{ 执行语句&#xff1b; } if..else if..else语句 :…

nginx集群_使用Nginx+Tomcat+keepalived 搭建高性能高可用性负载均衡集群

在互联网项目中&#xff0c;往往面临着高用户量、高并发的问题&#xff0c;造成服务器的压力非常大&#xff0c;特别是电商项目&#xff0c;以淘宝天猫为例&#xff0c;近年双十一的成交量屡创新高&#xff0c;可想而知淘宝天猫的服务器面临的并发量有多大&#xff0c;单一服务…

Nodejs之http模块详解

一、Web服务器 什么是Web服务器&#xff1f; 当应用程序&#xff08;客户端&#xff09;需要某一个资源时&#xff0c;可以向一个台服务器&#xff0c;通过Http请求获取到这个资源&#xff1b;提供资源的这个服务器&#xff0c;就是一个Web服务器&#xff1b; 目前有很多开源…

python 16bit转8bit的工具_利用python读取YUV文件 转RGB 8bit/10bit通用

注&#xff1a;本文所指的YUV均为YUV420中的I420格式(最常见的一种)&#xff0c;其他格式不能用以下的代码。位深为8bit时&#xff0c;每个像素占用1字节&#xff0c;对应文件指针的fp.read(1)&#xff1b;位深为10bit时&#xff0c;每个像素占用2字节&#xff0c;对应文件指针…

linux的几个文本内容查看命令小结

1cat可以查看文本内容&#xff0c;tac就是反向查看文本内容&#xff0c;但是文本内容多了就全部显示不出来 2nl查看文本内容可以显示行号 3more翻页查看以及less翻页查看 more filename 按键使用&#xff1a; enter一行一行的查看 空格键 向下翻页查看 b或者Ctrl b向上翻页 f或…

iOS开源照片浏览器框架SGPhotoBrowser的设计与实现

简介 近日在制作一个开源加密相册时附带着设计了一个照片浏览器&#xff0c;在进一步优化后发布到了GitHub供大家使用&#xff0c;该框架虽然没有MWPhotoBrowser那么强大&#xff0c;但是使用起来更为方便&#xff0c;操作更符合常规相册习惯&#xff0c;自定义和修改源码也十分…