koa2项目jwt结合jsonwebtoken进行加密和验签

2023-11-30 18:04

本文主要是介绍koa2项目jwt结合jsonwebtoken进行加密和验签,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.创建项目

koa-generator快速生成koa项目 koa2 admin-server

npm install -g koa-generator

koa2 admin-server

npm install

npm run dev启动服务

2.token设置

app.js引入koa-jwt和jsonwebtoken

npm i koa-jwt

npm i jsonwebtoken

  1. 引入路由文件;
  2. 对没有验签通过返回错误的请求进行错误拦截
  3. 对不需要验签的请求进行处理 
// jwt
const jwt = require("koa-jwt");
const token = require("./utils/token");//引入路由文件
const index = require('./routes/index')
const users = require('./routes/users')//对没有验签通过返回的错误进行拦截处理
app.use(async (ctx, next) => {const start = new Date()// 如果token没有经过验证中间件会返回401错误,可以通过下面的中间件自定义处理这个错误await next().catch((err)=>{if (401 == err.status) {ctx.status = 401;ctx.body = '没有找到token信息,请检查接口请求头信息';logger.error("未找到token: "+ err);} else {logger.error(err);throw err;}})const ms = new Date() - start
})// 登录接口不验证toekn '/api/login'
app.use(jwt({ secret: token.secretKey }).unless({ path: [/^\/users\/login/]}));// routes(需要引入所有route文件)
app.use(index.routes(), index.allowedMethods())
app.use(users.routes(), users.allowedMethods())

token.js文件进行加密和验签

/*** token加密和验签:使用jsonwebtoken中间件*/
const { sign, verify } = require('jsonwebtoken');
const secretKey = "lmfang";module.exports = {
// 获取token
getToken(ctx){return ctx.request.headers.Authorization || '';
},// 加密
signToken(userInfo){// 定义 secret 密钥,建议将密钥命名为 secretKeyconst token = sign({ userName: userInfo.userName, userPwd:userInfo.userPwd }, secretKey, { expiresIn: '1h' });return token;
},// 验签
verifyToken(){const decoded = verify(token, secretKey);return decoded;
},
// 将secretKey返回
secretKey
}

这篇关于koa2项目jwt结合jsonwebtoken进行加密和验签的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/438005

相关文章

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再