IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 关于 koa2 使用 koa-jwt 出现的问题 -> 正文阅读

[JavaScript知识库]关于 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;

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-01 20:30:57  更:2022-02-01 20:31:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:42:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码