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

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

Java中的密码加密方式

《Java中的密码加密方式》文章介绍了Java中使用MD5算法对密码进行加密的方法,以及如何通过加盐和多重加密来提高密码的安全性,MD5是一种不可逆的哈希算法,适合用于存储密码,因为其输出的摘要长度固... 目录Java的密码加密方式密码加密一般的应用方式是总结Java的密码加密方式密码加密【这里采用的

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

SpringBoot项目引入token设置方式

《SpringBoot项目引入token设置方式》本文详细介绍了JWT(JSONWebToken)的基本概念、结构、应用场景以及工作原理,通过动手实践,展示了如何在SpringBoot项目中实现JWT... 目录一. 先了解熟悉JWT(jsON Web Token)1. JSON Web Token是什么鬼

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

Jenkins中自动化部署Spring Boot项目的全过程

《Jenkins中自动化部署SpringBoot项目的全过程》:本文主要介绍如何使用Jenkins从Git仓库拉取SpringBoot项目并进行自动化部署,通过配置Jenkins任务,实现项目的... 目录准备工作启动 Jenkins配置 Jenkins创建及配置任务源码管理构建触发器构建构建后操作构建任务

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密