关于 koa2 使用 koa-jwt 出现的问题
2022/1/31 23:15:13
本文主要是介绍关于 koa2 使用 koa-jwt 出现的问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在使用 koa-jwt 的时候要进行 Token 的身份认证,处理 UnauthorizedError 错误,所以要添加中间件,但是 koa2 的处理 jwt 创建错误的中间件与 express 不同
express 处理中间件:
// 导入 express 模块 const express = require("express"); //一定要在路由之前配置解析Token的中间件 const expressJWT = require("express-jwt"); // 导入配置文件 const config = require("./config"); // 使用 .unless({ path: [/^\/api\//] }) 指定哪些接口不需要进行 Token 的身份认证(这里需要注意,secret必须配置algorithms属性) app.use( expressJWT({ secret: config.jwtSecretKey, algorithms: ["HS256"] }).unless({ path: [/^\/api\//] }) ); // 身份认证错误中间件 app.use(function (err, req, res, next) { // 捕获身份认证失败的错误 if (err.name === "UnauthorizedError") { return res.cc("身份认证失败!"); } else { // 未知错误... res.cc(err); } }); // 调用 app.listen 方法,指定端口号并启动web服务器 app.listen(3000, function () { console.log("api server running at http://127.0.0.1:3000"); });
express 错误处理中间件是放在 app.use(expressJWT.... 后面的 但是 koa2 确不同,因为我习惯了 express 所以使用 koa2 的时候出现了错误,koa2 应该把错误处理中间件放在前面
const Koa = require("koa"); const app = new Koa(); // 导入配置文件 const { TOKEN_CONF } = require("./config/index"); //一定要在路由之前配置解析Token的中间件 const koaJWT = require("koa-jwt"); // 身份认证错误中间件 app.use(async (ctx, next) => { return next().catch(err => { if (err.status === 401) { // 自定义返回结果 ctx.status = 401; console.log(err.name); ctx.body = { code: 401, msg: err.message }; } else { throw err; } }); }); // 使用 .unless({ path: [/^\/api\//] }) 指定哪些接口不需要进行 Token 的身份认证(这里需要注意,secret必须配置algorithms属性) app.use( koaJWT({ secret: TOKEN_CONF.jwtSecretKey, algorithms: ["HS256"] }).unless({ path: [/^\/api\//] }) ); module.exports = app;
这篇关于关于 koa2 使用 koa-jwt 出现的问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)
- 2024-11-24细说敏捷:敏捷四会之每日站会
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解