egg-jwt 初探

2023-11-11

 

 egg-jwt 初探

 什么是 egg-jwt?

我们都知道前后端交互离不开做用户验证,常见的有两种。

- 后端将 sessionId 写到用户的 cookie 里,用户每次请求都会通过 cookie 再把 sessionId 传给后端,从而达到用户验证的目的。

- 后端不保存 session 数据,生成令牌后传给前端做储存,前端每次请求后端时带上令牌,从而达到目的。jwt 就是该方案的代表

 如何使用?

- 安装 egg-jwt

 npm i egg-jwt -S

 

- 在 egg plugin.ts 中配置

const plugin: EggPlugin = {
    jwt: {
        enable: true,
        package: 'egg-jwt'
    }
};

- 在 config.default.ts 中配置
 

config.jwt = {

    secret: "zfh",

};

 

- 在 service 中生成 token

const token = app.jwt.sign(
    {
        username: username,
    },
        app.config.jwt.secret,
    {
        expiresIn: "60m", // 过期时间
    }
);

 

- 接下来把生成的 token 返回给前端,前端在请求头里加上以下

config.headers.Authorization = token;

 

- 后端编写中间件后把需要验证身份的接口加上参数

//中间件 app\middleware\jwt.ts

module.exports = (options) => {
  return async function jwt(ctx, next) {
    const token = ctx.request.header.authorization;
    let decode: any;
    if (token) {
      try {
        // 解码token
        decode = ctx.app.jwt.verify(token, options.secret);
        await next();
      } catch (error) {
        ctx.status = 401;
        ctx.body = {
          message: error.message,
        };
        return;
      }
    } else {
      ctx.status = 401;
      ctx.body = {
        message: "没有token",
      };
      return;
    }
  };
};
  //app\router.ts

  const jwt = app.middleware.jwt(app.config.jwt);

  router.post("/user/getList", jwt, controller.user.getList);

这样就完成jwt的基本应用啦。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

egg-jwt 初探 的相关文章

随机推荐

  • casting java_Java学习14-对象类型转换(Casting)

    基本数据类型的Casting 1 自动类型转换 小的数据类型可以自动转换成大的数据类型 如long g 20 double d 12 0f 2 强制类型转换 可以把大的数据类型强制转换 casting 成小的数据类型 如 float f f
  • 【QT开发笔记-基础篇】

    本节对应的视频讲解 B 站 链 接 https www bilibili com video BV19B4y1s7YF 由于 QWidget 类是所有控件类的父类 因此本节课先讲解 QWidget 所有窗口类的基类 Qt 中有 3 个窗口的
  • DTH11温湿度传感器使用(stm32)

    可以参考这个博客 https blog csdn net qq 27508477 article details 83661672 但是由于stm32f103很难得到1us的时钟 而且使用HAL库没有直接的寄存器操作 所以需要一定的修改 这
  • 爬取新浪股票财务数据

    coding utf 8 import HTMLParser import urllib2 import sys type sys getfilesystemencoding 截止日期 每股净资产 每股收益 每股现金含量 每股资本公积金 固
  • ORACLE数据块

    下午在学习oracle 10g r2 concepts 在这留一笔 Oracle对数据库数据文件 datafile 中的存储空间进行管理的单位是数据块 data block 数据块是数据库中最小的 逻辑 数据单位 与数据块对应的 所有数据在
  • windows 10下vue 2.x 环境安装(npm网络环境不好时)

    windows 10下vue 环境安装 项目建立和运行 文章目录 windows 10下vue 环境安装 项目建立和运行 确定nodejs和npm已经安装 安装cnpm 安装vue 建立vue项目 使用vscode打开项目cnpm安装依赖
  • 一、OSI参考模型

    一 OSI参考模型 OSI Open System Interconnect 即开放式系统互连 一般都叫OSI参考模型 是ISO组织在1985年研究的网络互连模型 该体系结构标准定义了网络互连的七层框架 物理层 数据链路层 网络层 传输层
  • VMWare虚拟机文件夹共享不生效解决方法

    VMWare虚拟机文件夹共享不生效解决方法 mnt hgfs 中找不到共享文件夹 在安装了 vm tools 或 网上各种教程 vmhgfs fuse 都挂载不上可采取以下临时解决方法 1 关闭VMWare中的文件夹共享 2 重启虚拟机 3
  • nginx中健康检查(health_check)机制深入分析

    转自 https segmentfault com a 1190000002446630 很多人都知道nginx可以做反向代理和负载均衡 但是关于nginx的健康检查 health check 机制了解的不多 其实社区版nginx提供的he
  • 合宙Air724UG LuatOS-Air LVGL API控件--图表 (Chart)

    图表 Chart 一幅图胜过一千个字 通过图表展示出的数据内容能让用户更快速有效的了解数据特征 代码示例 创建图表 chart lvgl chart create lvgl scr act nil lvgl obj set size cha
  • 从零开始做单相逆变电源(硬件)

    文章目录 前言 一 主要模块需求 1 全桥模块 2 采样电路 光耦 前言 题目 单相正弦逆变电源 具体软件部分请参照从零开始做单相逆变电源 软件 一 主要模块需求 本系统以TM4C123GH6PM单片机 FPGA为控制核心 基于正弦脉冲宽度
  • 1654. 到家的最少跳跃次数

    文章目录 Tag 题目来源 题目解读 解题思路 实现细节 实现代码 复杂度分析 写在最后 Tag 广搜 上限证明 图论 题目来源 1654 到家的最少跳跃次数 题目解读 找到从位置 0 跳跃到位置 x 的最小跳跃次数 跳跃规则如下 前进方向
  • daytime协议的服务器和客户端程序,用Socket套接字实现DAYTIME协议的服务器和客户端程序-20210414073352.docx-原创力文档...

    用Socket套接字实现 DAY TIME 协议的服务器和客户端程序 一 设计目的 为了提高同学的自主动手能力 把理论知识运用于实 践中 从实践中更好的领悟所学的知识 二 题目要求及需求分析 网络I O程序设计 用Socket套接字实现DA
  • void指针的用法

    指针有两个属性 指向变量 对象的地址和长度 但是指针只存储地址 长度则取决于指针的类型 编译器根据指针的类型从指针指向的地址向后寻址 指针类型不同则寻址范围也不同 比如 int 从指定地址向后寻找4字节作为变量的存储单元 double 从指
  • quillEditor富文本编辑器实现插入视频

    quillEditor富文本编辑器实现插入视频 quillEditor富文本编辑器实现插入视频默认是通过iframe来展示的 并不符合我们的实际需求 我们需要直接展示视频 这里就是直接展示视频的效果 新建一个video模块用来替换原来vid
  • 云服务器选什么系统

    特网科技是一家领云计算服务提供商 拥有全球性服务 覆盖了超过200个国家和地区 提供多种不同的服务器操作系统 包括常见的Linux和Windows 以及一些非常特殊的OS 如FreeBSD和OpenSUSE 如何选择合适的操作系统对于服务器
  • MySQL安装教程(CentOS7系统)

    MySQL安装教程 1 使用wget指令下载MySQL安装包 指令 wget https dev mysql com get mysql57 community release el7 9 noarch rpm 效果展示 2 使用rpm指令
  • 371 .两整数之和

    371 两整数之和 地址 https leetcode cn com problems sum of two integers 题目 不使用运算符 和 计算两整数 a b 之和 示例 示例1 输入 a 1 b 2 输出 3 思路 位运算 观
  • e5服务器系列天梯图,最新的至强e5处理器天梯图

    有很多朋友都非常关注cpu市场的情况 因为一款CPU性能的好坏 决定了我们电脑的运算能力高低 CPU的种类多种多样 性能也不尽相同 今天我们主要关注的是英特尔e5处理器系列 为了直观对比e5系列cpu的性能情况 我们可以参考至强e5处理器天
  • egg-jwt 初探

    egg jwt 初探 什么是 egg jwt 我们都知道前后端交互离不开做用户验证 常见的有两种 后端将 sessionId 写到用户的 cookie 里 用户每次请求都会通过 cookie 再把 sessionId 传给后端 从而达到用户