express.js--token中间件验证及token解析(三)

news2024/11/17 5:23:37

主要作用

访问路由接口时,哪些需要校验token

通过token解析身份信息,就可以知道是哪个人

框架基本搭建express.js--基本用法及路由模块化(一)-CSDN博客

如何生成tokenexpress.js--生成token(二)-CSDN博客

middleware/index.js

const jwt = require('jsonwebtoken');
const { app } = require('../config');
/* 解析token 获取用户信息 */
const decodeToken = (token) => {
    return jwt.verify(token, app.jwtSecret);
}
/* token信息校验 */
const checkToken = (req, res, next) => {
    //判断是否存在token
    if (!req.headers.authorization) {
        return res.status(401).json({
            code: 401,
            msg: "请登录"
        })
    } else {
        //判断jwt是否正确或者是否过期
        jwt.verify(req.headers.authorization, app.jwtSecret, (err, decoded) => {
            if (err) {
                return res.status(401).json({
                    code: 401,
                    msg: "token错误或过期"
                })
            }
            next()
        })
    }
}
module.exports = {
    decodeToken,
    checkToken
}

routes/user.js

const router = require("express").Router()
const { register } = require("../controller/User")
const { checkToken, decodeToken } = require("../middleware")
//登录
router.post("/login", register)
//签到
router.post("/sign", checkToken, (req, res) => {
    let user = decodeToken(req.headers.authorization)
    console.log(user);
    res.send({
        code: 200,
        data: [],
        msg: "签到成功",
    });
})
//修改个人信息
router.post("/update", (req, res) => {
    res.send({
        code: 200,
        data: [],
        msg: "修改成功",
    });
})
module.exports = router

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1684302.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【linux】yumvim工具理解使用

目录 Linux 软件包管理器 yum 关于 rzsz 注意事项 查看软件包 Linux开发工具 Linux编辑器-vim使用 vim的基本概念 vim的基本操作 vim正常模式命令集 vim末行模式命令集 简单vim配置 配置文件的位置 sudo提权 Linux 软件包管理器 yum 1.yum是什么&#xff1…

Java基础22(JSON解析 注解)

目录 一、JSON解析 1. JSON语法 2. JSON的用途 3. Java解析JSON 4. 使用Fastjson 4.1 Fastjson 的优点 4.2 Fastjson 导包 4.3 Fastjson的主要对象 4.4 常用方法 将Java对象 "序列化"(转换) 为JSON字符串: 将JSON字符串…

薪资不公、晋升无望?动笔写一份申诉材料吧!

薪资不公、晋升无望?动笔写一份申诉材料吧! 引言:每个努力工作的人都值得公平对待 在职场上,我们付出了汗水和智慧,期待着相应的回报——合理的工资和公正的晋升机会。然而,现实并不总是如此美好。当你感觉…

康谋分享 | aiSim5基于生成式AI扩大仿真测试范围(终)

在前面的几章节中探讨了aiSim仿真合成数据的置信度,此外在场景重建和测试流程闭环的过程中,难免会面临3D场景制作重建耗时长、成本高、扩展性低以及交通状况复杂程度难以满意等问题,当前的主要挑战在于如何自动化生成3D静态场景并添加动态实例…

深入理解C#中的IO操作 - FileStream流详解与示例

文章目录 一、FileStream类的介绍二、文件读取和写入2.1 文件读取(FileStream.Read)2.2 文件写入(FileStream.Write) 三、文件复制、移动和目录操作3.1 文件复制(FileStream.Copy)3.2 文件移动(…

VMware ESXI 7.0安装部署

1、为什么要虚拟化? 目前,物理服务器存在以下几个问题: 1)硬件资源利用率低; 2)可靠性不足,物理服务器宕机即可造成整体业务停摆; 3)维护量大,无法实现统…

H5228 6.5-75V60V48V36V24V12V 升降压芯片LED恒流驱动IC 支持无频闪数转模调光

H5228 是款调光特性良好的宽范围调光比且无频闪调光的 LED 恒流驱动器。支持降压、 升压和升降压拓扑的应用,具有 6.5~75V 宽输入工作电压范围,采用连续电流模式(CCM) 为高亮度 LED 供电。调光深度可调很低,在低亮负…

计算机缺失ffmpeg.dll如何修复,五种详细的修复教程分享

当你在使用电脑过程中,突然遇到系统或软件弹出提示信息,告知“ffmpeg.dll文件丢失”怎么办?当电脑提示ffmpeg.dll丢失时,可能会导致一些应用程序无法正常运行或出现错误提示。下面我将介绍5种解决电脑提示ffmpeg.dll丢失的方法。 …

【Linux】:进程切换

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux进程切换的知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精…

全面了解CC攻击和防范策略

前言 “ CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。” 什么是CC攻击? CC攻击前身是一个名为Fatboy的攻击程序,而之所以后来人们会称之为CC,也叫HTTP-FLOOD&#xff…

浅谈面向对象--多态

接口 接口概述 我们要完成一个工程,需要一个插座 思考1:去市场买个回来!> 市场上有公牛、小米... > 小米和公牛认识吗?什么原因导致公牛和小米的插座我都可以用 接口是一种约定的规范,是多个抽象方法的集合&…

基于网络爬虫技术的网络新闻分析(四)

目录 4.2 系统异常处理 4.2.1 爬虫异常总体概况 4.2.2 爬虫访问网页被拒绝 5 软件测试 5.1 白盒测试 5.1.1 爬虫系统测试结果 5.1.2 中文分词系统测试结果 5.1.3 中文文章相似度匹配系统测试结果 5.1.4 相似新闻趋势展示系统测试结果 5.2 黑盒测试 5.2.1 爬虫系统测…

【每日刷题】Day47

【每日刷题】Day47 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 112. 路径总和 - 力扣(LeetCode) 2. 2404. 出现最频繁的偶数元素 - 力扣&am…

PPT图片高清导出

PPT制作的图片高清导出 适用于windows系统 案例 例如想要导出下面这张图片 1. 保存为emf文件 2. 将emf文件导入画图软件 导入方法直接将emf文件拖进去就行,可以看到图片成功高清显示(可以通过放缩检查是否模糊)。 3. 修改分辨率 点击上方…

Redis协议的请求和响应有哪些“套路”可循?no.18

Redis 协议 Redis 支持 8 种核心数据结构,每种数据结构都有一系列的操作指令,除此之外,Redis 还有事务、集群、发布订阅、脚本等一系列相关的指令。为了方便以一种统一的风格和原则来设计和使用这些指令,Redis 设计了 RESP&#…

适用于Windows 电脑的最佳视频恢复软件和方法

毫无疑问,丢失您的基本数据总是有压力的,尤其是当这些是您为捕捉最美好回忆而收集的重要视频文件时。要恢复丢失或损坏的视频文件,您可以借助视频恢复工具。但是,在选择最佳视频恢复工具时,您必须考虑多个扫描选项&…

Linux .eh_frame section以及libunwind

文章目录 前言一、LSB二、The .eh_frame section2.1 简介2.2 The Common Information Entry Format2.1.1 Augmentation String Format 2.3 The Frame Description Entry Format 三、The .eh_frame_hdr section四、libunwind五、基于Frame Pointer和基于unwind 形式的栈回溯比较…

紫光展锐突破创新终端品类,搭载展锐芯的全球首款二合一5G云电脑正式发布

近日,搭载紫光展锐5G芯片T760的中兴云电脑逍遥系列正式发布,亮点: 全球首款二合一5G云电脑,支持本地/云端双模式,一键切换,用户可同时享有Android平板和Windows云电脑两种形态;支持5G蜂窝网络&…

LLama3 | 一. 本地 Web Demo 部署

前置工作 课程文档:Llama3-Tutorial/docs/hello_world.md at main SmartFlowAI/Llama3-Tutorial GitHub 1.安装vscode 2.安装vscode插件 Remote SSH 3.配置 VSCode 远程连接开发机 ssh连接开发机 进行端口映射 在开发机控制台中点击自定义服务,复…

DeepDriving | CUDA编程-02: 初识CUDA编程

本文来源公众号“DeepDriving”,仅用于学术分享,侵权删,干货满满。 原文链接:CUDA编程-02: 初识CUDA编程 上一篇文章DeepDriving | CUDA编程-01: 搭建CUDA编程环境-CSDN博客介绍了如何搭建CUDA编程环境&a…